← 返回
未分类 中文

Vitest Testing

Vitest testing framework patterns and best practices. Use when writing unit tests, integration tests, configuring vitest.config, mocking with vi.mock/vi.fn,...
Vitest 测试框架模式与最佳实践。适用于编写单元测试、集成测试、配置 vitest.config、使用 vi.mock/vi.fn 进行模拟等...
anderskev
未分类 clawhub v1.1.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 889
下载
💾 4
安装
1
版本
#latest

概述

Vitest Best Practices

Quick Reference

import { describe, it, expect, beforeEach, vi } from 'vitest'

describe('feature name', () => {
  beforeEach(() => {
    vi.clearAllMocks()
  })

  it('should do something specific', () => {
    expect(actual).toBe(expected)
  })

  it.todo('planned test')
  it.skip('temporarily disabled')
  it.only('run only this during dev')
})

Common Assertions

// Equality
expect(value).toBe(42)                    // Strict (===)
expect(obj).toEqual({ a: 1 })             // Deep equality
expect(obj).toStrictEqual({ a: 1 })       // Strict deep (checks types)

// Truthiness
expect(value).toBeTruthy()
expect(value).toBeFalsy()
expect(value).toBeNull()
expect(value).toBeUndefined()

// Numbers
expect(0.1 + 0.2).toBeCloseTo(0.3)
expect(value).toBeGreaterThan(5)

// Strings/Arrays
expect(str).toMatch(/pattern/)
expect(str).toContain('substring')
expect(array).toContain(item)
expect(array).toHaveLength(3)

// Objects
expect(obj).toHaveProperty('key')
expect(obj).toHaveProperty('nested.key', 'value')
expect(obj).toMatchObject({ subset: 'of properties' })

// Exceptions
expect(() => fn()).toThrow()
expect(() => fn()).toThrow('error message')
expect(() => fn()).toThrow(/pattern/)

Async Testing

// Async/await (preferred)
it('fetches data', async () => {
  const data = await fetchData()
  expect(data).toEqual({ id: 1 })
})

// Promise matchers - ALWAYS await these
await expect(fetchData()).resolves.toEqual({ id: 1 })
await expect(fetchData()).rejects.toThrow('Error')

// Wrong - creates false positive
expect(promise).resolves.toBe(value)  // Missing await!

Quick Mock Reference

const mockFn = vi.fn()
mockFn.mockReturnValue(42)
mockFn.mockResolvedValue({ data: 'value' })

expect(mockFn).toHaveBeenCalled()
expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2')
expect(mockFn).toHaveBeenCalledTimes(2)

Additional Documentation

Test Methods Quick Reference

MethodPurpose
-----------------
it() / test()Define test
describe()Group tests
beforeEach() / afterEach()Per-test hooks
beforeAll() / afterAll()Per-suite hooks
.skipSkip test/suite
.onlyRun only this
.todoPlaceholder
.concurrentParallel execution
.each([...])Parameterized tests

版本历史

共 1 个版本

  • v1.1.0 当前
    2026-05-03 03:38 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Review Verification Protocol

anderskev
在报告任何代码审查结果前,必须先加载此技能,执行所有代码审查的强制验证步骤,以降低误报。
★ 0 📥 719

Rust Testing Code Review

anderskev
审查 Rust 测试代码,包括单元测试模式、集成测试结构、异步测试、模拟方式和属性测试,覆盖 Rust 2024 版。
★ 0 📥 763

Python Code Review

anderskev
审查 Python 代码的类型安全、异步模式、错误处理及常见错误。适用于审查 .py 文件、检查类型提示、async/await 用法。
★ 0 📥 683