本文へ移動
cccskills
無料GitHub で公開日本語紹介

tdesign-component-test

Vitestを使ってTDesign Reactコンポーネントの単体テストを作成・更新し、propsやイベント、非同期処理、スナップショットを整理して確認できます。

原文原文の説明を見る

This skill should be used when writing and maintaining unit tests for TDesign React components. It provides Vitest testing patterns, best practices, and snapshot testing guidance.

Tencent/tdesign-reactスター 973(GitHub 973 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • コンポーネントの単体テストを追加したいとき
  • 既存のテストを修正したいとき
  • スナップショットを確認・更新したいとき
  • 非同期の画面更新をテストしたいとき
  • テストカバレッジを高めたいとき

日本語での紹介

できること

TDesign Reactコンポーネントの単体テストを作成・保守するための手順やパターンを示します。テスト実行にはVitestを使い、テストファイルの配置や命名、props、events、instanceFunctions、scenariosの分け方を案内します。@test/utilsに用意された描画、イベント、モック、入力、待機などの補助機能を使って、ユーザー操作や非同期の画面更新を検証できます。CSR・SSRのスナップショット確認や更新、指定コンポーネントのテスト実行、カバレッジ生成に使うコマンドも示します。

こんなときに便利

TDesign Reactのコンポーネントにテストを追加するときや、既存のテストを修正するときに役立ちます。propsの表示、イベントの発火、複数APIが連携するシナリオなど、テスト対象に応じた整理方法を確認できます。非同期処理の待ち方や、意図した変更に合わせてスナップショットを更新する手順を知りたい場合にも向いています。

使い方の例

  • 「このTDesignコンポーネントの単体テストを書いて」
  • 「失敗しているコンポーネントテストを修正して」
  • 「変更内容を確認してスナップショットを更新して」

注意点

Vitestと、@testing-library/react、@testing-library/user-event、@testing-library/jest-domを使う構成です。テストコマンドはpnpmを使用します。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(1)

  • SKILL.md4.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

TDesign 组件测试指南

本技能提供 TDesign React 组件单元测试的最佳实践。

测试触发条件

当用户需要执行以下任务时使用此技能:

  • 为组件编写单元测试
  • 更新或修复测试用例
  • 运行快照测试
  • 提高测试覆盖率

测试框架和工具

工具用途
Vitest测试运行器
@testing-library/reactReact 组件测试工具
@testing-library/user-event用户交互模拟
@testing-library/jest-domDOM 断言扩展

@test/utils 已封装常用工具,包括:

  • render - 组件渲染
  • fireEvent - 事件触发
  • vi - Vitest mock 工具
  • act - React act wrapper
  • userEvent - 用户交互模拟
  • mockDelay / mockTimeout - 异步等待
  • simulateInputChange - 输入模拟
  • simulateKeydownEvent - 键盘事件模拟
  • waitFor - 异步断言

测试文件规范

文件位置和命名

packages/components/[component-name]/
└── __tests__/
    ├── [component-name].test.tsx    # 主组件单元测试(推荐)
    ├── [sub-module].test.tsx        # 子模块拆分测试(可选)
    └── __snapshots__/               # 快照目录(按需生成)

文件内容和结构

  • 固定顶层结构:每个组件的测试文件仅允许以下四种顶层 describe:props、events、instanceFunctions、scenarios。无相关测试内容时可省略对应分组。

  • 用例较少时:在对应的顶层 describe 中编写 test(...),不额外嵌套。

  • 用例较多时:在对应的顶层 describe 内,可按具体功能维度嵌套子 describe,再编写 test(...)。

  • 层级约束:禁止在组件根 describe 下直接编写 test(...),也禁止新增其他顶层 describe。

describe("ComponentName", () => {
  describe("props", () => {
    // 1. 按需使用 `propName[type]`(如 TNode、function、number)或 `propName[enumValue]`
    // 2. 方括号仅允许具体类型或合法枚举值,禁止写具体数值。数组类型统一写成 `array<T>`,禁止使用 `string[]` 等;
    //    布尔属性按常规方式开启(传入 `true` 或使用简写)时直接写属性名;仅显式验证关闭时写 `[false]`;同一用例覆盖两种取值时才写 `[boolean]`
    // 3. 同一属性的多个枚举值若测试结构与断言一致,应提取取值列表并使用 `forEach` 生成独立的 `test('propName[enumValue]')`,避免重复编写同构用例
    // 4. 同一行为涉及多个边界值或组合条件,且无需通过标题分别表达时,合并进单个 `test('propName')`,具体阈值与数据留在用例内
    // 5. 若标题必须补充复杂目的或场景描述时才能表达,应将用例移入 scenarios
  });
  describe("events", () => {
    // 回调 prop(onChange 等)是否触发
  });
  describe("instanceFunctions", () => {
    // ref 命令式 API、Plugin 静态方法等(无则省略)
  });
  describe("scenarios", () => {
    // 1. 覆盖多 API 联动的完整业务流;复杂时可嵌套子 `describe`
    // 2. 标题应明确涉及的 API 与测试目的,优先使用自然语言,仅在枚举值是关键条件时保留 `[enumValue]`
    // 3. 单 prop、多 prop 组合的简单渲染测试归入 `props`,不应放在此模块
    // 4. 仅验证回调是否触发及参数的测试归入 `events`
});

测试命令

pnpm test                                                    # 运行所有测试
pnpm test:coverage                                           # 生成覆盖率
pnpm test:ui                                                 # 启动测试 UI
pnpm test:snap                                               # 校验全部快照
pnpm test:update                                             # 更新全部快照
pnpm exec vitest run <component>                             # 运行指定组件的测试

<component> 替换为实际组件名,例如 button。

快照测试文件:

  • CSR:test/snap/csr.test.jsx,自动为所有 _example/*.tsx 生成快照。
  • SSR:test/snap/ssr.test.jsx。

常见问题

Q: 如何处理异步组件?

A: 使用 mockDelay、mockTimeout、waitFor 或 act,在断言前等待 UI 更新。

Q: 快照测试失败怎么办?

A: 首先检查变更是否预期内。如果是预期变更,用上面的 pnpm test:update 或带 -u 的组件命令更新快照。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

tdesign-component-style

無料概要あり

TDesign Reactコンポーネントのスタイルを新規作成・変更するときに、BEM命名、Design Token、状態クラスと共通スタイルの連携方法を確認できます。

  • 新しいコンポーネントのスタイルを作りたいとき
  • 既存コンポーネントの見た目を直したいとき
  • CSSクラスの命名を確認したいとき
Tencent/tdesign-react9732026年10月28日 更新

tdesign-create-component

無料概要あり

TDesign Reactの新しいコンポーネントを追加する際に、配置先やファイル構成、実装・テスト・文書作成から公開登録までの手順を案内します。

  • 新しい基本コンポーネントを作りたいとき
  • 高階コンポーネントを追加したいとき
  • コンポーネントのひな型を用意したいとき
Tencent/tdesign-react9732026年10月28日 更新

tdesign-pro-component

無料概要あり

TDesignのAIチャット画面を開発・改修する際に、ChatEngineやAG-UI連携、ツール呼び出し、動的UIの組み立て方を確認できるガイドです。

  • TDesignのチャット画面を作りたいとき
  • AG-UIのTool Callを組み込みたいとき
  • Agentの状態や進捗を表示したいとき
Tencent/tdesign-react9732026年10月28日 更新

Tencent のスキルをすべて見る

このスキルの問題を報告する