使用 Vitest 和 Vue Test Utils 的标准模版与断言技巧
采用 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 规则判断是否需要加载
b08ac38
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.