TDesign Reactコンポーネントのスタイルを新規作成・変更するときに、BEM命名、Design Token、状態クラスと共通スタイルの連携方法を確認できます。
- 新しいコンポーネントのスタイルを作りたいとき
- 既存コンポーネントの見た目を直したいとき
- CSSクラスの命名を確認したいとき
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.
実行スコア 未検証
インストール方法を見るTDesign Reactコンポーネントの単体テストを作成・保守するための手順やパターンを示します。テスト実行にはVitestを使い、テストファイルの配置や命名、props、events、instanceFunctions、scenariosの分け方を案内します。@test/utilsに用意された描画、イベント、モック、入力、待機などの補助機能を使って、ユーザー操作や非同期の画面更新を検証できます。CSR・SSRのスナップショット確認や更新、指定コンポーネントのテスト実行、カバレッジ生成に使うコマンドも示します。
TDesign Reactのコンポーネントにテストを追加するときや、既存のテストを修正するときに役立ちます。propsの表示、イベントの発火、複数APIが連携するシナリオなど、テスト対象に応じた整理方法を確認できます。非同期処理の待ち方や、意図した変更に合わせてスナップショットを更新する手順を知りたい場合にも向いています。
Vitestと、@testing-library/react、@testing-library/user-event、@testing-library/jest-domを使う構成です。テストコマンドはpnpmを使用します。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
本技能提供 TDesign React 组件单元测试的最佳实践。
当用户需要执行以下任务时使用此技能:
| 工具 | 用途 |
|---|---|
| Vitest | 测试运行器 |
| @testing-library/react | React 组件测试工具 |
| @testing-library/user-event | 用户交互模拟 |
| @testing-library/jest-dom | DOM 断言扩展 |
@test/utils 已封装常用工具,包括:
render - 组件渲染fireEvent - 事件触发vi - Vitest mock 工具act - React act wrapperuserEvent - 用户交互模拟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。
快照测试文件:
test/snap/csr.test.jsx,自动为所有 _example/*.tsx 生成快照。test/snap/ssr.test.jsx。A: 使用 mockDelay、mockTimeout、waitFor 或 act,在断言前等待 UI 更新。
A: 首先检查变更是否预期内。如果是预期变更,用上面的 pnpm test:update 或带 -u 的组件命令更新快照。
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
TDesign Reactコンポーネントのスタイルを新規作成・変更するときに、BEM命名、Design Token、状態クラスと共通スタイルの連携方法を確認できます。
TDesign Reactの新しいコンポーネントを追加する際に、配置先やファイル構成、実装・テスト・文書作成から公開登録までの手順を案内します。
TDesignのAIチャット画面を開発・改修する際に、ChatEngineやAG-UI連携、ツール呼び出し、動的UIの組み立て方を確認できるガイドです。