Vitest testing framework patterns and best practices. Use when writing unit tests, integration tests, configuring vitest.config, mocking with vi.mock/vi.fn, using snapshots, or setting up test coverage. Triggers on describe, it, expect, vi.mock, vi.fn, beforeEach, afterEach, vitest.
ts
import { describe, it, expect, beforeEach, vi } from vitest
describe(功能名称, () => {
beforeEach(() => {
vi.clearAllMocks()
})
it(应执行特定操作, () => {
expect(actual).toBe(expected)
})
it.todo(计划中的测试)
it.skip(暂时禁用)
it.only(开发时仅运行此项)
})
ts
// 相等性
expect(value).toBe(42) // 严格相等 (===)
expect(obj).toEqual({ a: 1 }) // 深度相等
expect(obj).toStrictEqual({ a: 1 }) // 严格深度相等(检查类型)
// 真值判断
expect(value).toBeTruthy()
expect(value).toBeFalsy()
expect(value).toBeNull()
expect(value).toBeUndefined()
// 数字
expect(0.1 + 0.2).toBeCloseTo(0.3)
expect(value).toBeGreaterThan(5)
// 字符串/数组
expect(str).toMatch(/pattern/)
expect(str).toContain(子字符串)
expect(array).toContain(元素)
expect(array).toHaveLength(3)
// 对象
expect(obj).toHaveProperty(key)
expect(obj).toHaveProperty(nested.key, value)
expect(obj).toMatchObject({ subset: 属性子集 })
// 异常
expect(() => fn()).toThrow()
expect(() => fn()).toThrow(错误消息)
expect(() => fn()).toThrow(/pattern/)
ts
// Async/await(推荐)
it(获取数据, async () => {
const data = await fetchData()
expect(data).toEqual({ id: 1 })
})
// Promise 匹配器 - 务必使用 await
await expect(fetchData()).resolves.toEqual({ id: 1 })
await expect(fetchData()).rejects.toThrow(错误)
// 错误写法 - 会产生误报
expect(promise).resolves.toBe(value) // 缺少 await!
ts
const mockFn = vi.fn()
mockFn.mockReturnValue(42)
mockFn.mockResolvedValue({ data: value })
expect(mockFn).toHaveBeenCalled()
expect(mockFn).toHaveBeenCalledWith(arg1, arg2)
expect(mockFn).toHaveBeenCalledTimes(2)
| 方法 | 用途 |
|---|---|
| it() / test() | 定义测试 |
| describe() |
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 vitest-testing-1775975348 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 vitest-testing-1775975348 技能
skillhub install vitest-testing-1775975348
文件大小: 10.04 KB | 发布时间: 2026-4-13 12:30