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,...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 82 · 0 current installs · 0 all-time installs
byKevin Anderson@anderskev
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description match the provided files: examples, config snippets, mocking and pattern guidance for Vitest. No unrelated binaries, credentials, or third-party services are requested.
Instruction Scope
SKILL.md and companion files contain sample test code, config examples, and mocking patterns. They do not instruct reading arbitrary host files, exfiltrating data, or contacting external endpoints. They do show process.env/.env.test usage as normal examples for tests.
Install Mechanism
No install spec and no code files that would be written to disk or executed by an installer. This is instruction-only, the lowest install risk.
Credentials
The documentation shows how tests can access environment variables (process.env, .env.test and vi.stubEnv) but the skill does not declare or require any environment variables or credentials. Examples referencing env vars are expected for testing docs but users should avoid putting secrets into test env files.
Persistence & Privilege
always is false, no config paths or persistent modification of other skills or system settings. The skill is user-invocable and may be invoked by agents normally, which is expected for instructional skills.
Assessment
This skill is a set of Vitest examples and best-practice notes and appears coherent with its stated purpose. It's low-risk because it requests no credentials and has no installer, but two practical cautions: (1) provenance is unspecified (no homepage/source) — prefer content from an official or known author when security/trust matters; (2) the docs show using environment variables and setup files: do not place secrets in test env files or automatically run untrusted test setup code in CI or on machines with access to sensitive data. If you need stronger assurance, ask the publisher for a source repository or license before installing/using.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.1.0
Download zip
latestvk97bpsnps0dy7sagy431nee8kh83pwt9

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…