com um clique
vue-3-vitest
使用 Vitest 和 Vue Test Utils 的标准模版与断言技巧
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
使用 Vitest 和 Vue Test Utils 的标准模版与断言技巧
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
Archive multiple completed changes at once. Use when archiving several parallel changes.
Continue working on an OpenSpec change by creating the next artifact. Use when the user wants to progress their change, create the next artifact, or continue their workflow.
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.
Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.
| id | qual-unit-test |
| name | Vue 3 组件单元测试指南 (Vitest) |
| category | quality |
| description | 使用 Vitest 和 Vue Test Utils 的标准模版与断言技巧 |
| tags | ["test","vitest","vue-test-utils","quality"] |
| updated_at | "2026-01-09T00:00:00.000Z" |
采用 Vitest 作为测试运行器,配合 @vue/test-utils 进行组件测试。
"devDependencies": {
"vitest": "^1.0.0",
"@vue/test-utils": "^2.4.0",
"jsdom": "^23.0.0"
}
import { mount } from '@vue/test-utils';
import { describe, it, expect, vi } from 'vitest';
import MyComponent from './MyComponent.vue';
describe('MyComponent.vue', () => {
it('renders properly', () => {
const wrapper = mount(MyComponent, {
props: { title: 'Hello' }
});
expect(wrapper.text()).toContain('Hello');
});
it('emits event on click', async () => {
const wrapper = mount(MyComponent);
await wrapper.find('button').trigger('click');
expect(wrapper.emitted()).toHaveProperty('submit');
});
});
// Mock 第三方组件
const wrapper = mount(MyComponent, {
global: { stubs: { 'bk-table': true } }
});
// Mock API(文件顶部)
vi.mock('@/api/user', () => ({
getUserInfo: vi.fn(() => Promise.resolve({ id: 1 }))
}));
npm run test:unit
| 资源 | URI |
|---|---|
| 完整测试示例 | skill://unit-testing/assets/component.spec.ts |
skill://unit-testing/assets/component.spec.ts根据 SKILL.md 中的 IF-THEN 规则判断是否需要加载