vitest-testing

Vitest Best Practices

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "vitest-testing" with this command: npx skills add existential-birds/beagle/existential-birds-beagle-vitest-testing

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

  • Mocking: See references/mocking.md for module mocking, spying, cleanup

  • Configuration: See references/config.md for vitest.config, setup files, coverage

  • Patterns: See references/patterns.md for timers, snapshots, anti-patterns

Test Methods Quick Reference

Method Purpose

it() / test()

Define test

describe()

Group tests

beforeEach() / afterEach()

Per-test hooks

beforeAll() / afterAll()

Per-suite hooks

.skip

Skip test/suite

.only

Run only this

.todo

Placeholder

.concurrent

Parallel execution

.each([...])

Parameterized tests

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

tailwind-v4

No summary provided by upstream source.

Repository SourceNeeds Review
General

react-flow

No summary provided by upstream source.

Repository SourceNeeds Review
General

react-router-v7

No summary provided by upstream source.

Repository SourceNeeds Review
General

react-flow-advanced

No summary provided by upstream source.

Repository SourceNeeds Review