Community코딩 & 개발github.com

supabase/vitest

Vite 기반의 빠른 단위 테스트 프레임워크인 Vitest로, Jest 호환 API를 제공합니다. 테스트 작성, 모킹, 커버리지 설정, 테스트 필터링 및 픽스처 작업 시 사용하세요.

vitest란 무엇인가요?

이 스킬은 Vite 기반의 초고속 단위 테스트 프레임워크인 Vitest를 사용하는 방법을 제공합니다. Jest와 호환되는 API를 갖추고 있어 기존 Jest 사용자도 쉽게 적응할 수 있으며, 테스트 작성, 모킹, 커버리지 설정, 테스트 필터링, 픽스처(fixtures) 관리 등 다양한 테스트 관련 작업을 지원합니다. Vitest는 Vite의 빠른 개발 서버와 HMR(Hot Module Replacement)을 활용하여 테스트 실행 속도를 극대화하며, Jest와 유사한 구문(describe, it, expect 등)을 그대로 사용할 수 있어 마이그레이션이 용이합니다. 이 스킬은 특히 모던 JavaScript/TypeScript 프로젝트에서 빠르고 안정적인 테스트 환경을 구축하고자 하는 개발자에게 유용하며, 커뮤니티에서 널리 사용되는 다양한 어댑터와 통합도 지원합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/supabase/supabase/tree/main/skills/vitest

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

vitest은(는) 무엇을 하나요?

Vite 기반의 빠른 단위 테스트 프레임워크인 Vitest로, Jest 호환 API를 제공합니다. 테스트 작성, 모킹, 커버리지 설정, 테스트 필터링 및 픽스처 작업 시 사용하세요.

주요 특징

  • 초고속 실행: Vite의 네이티브 ESM 및 HMR을 활용하여 테스트를 빠르게 실행합니다.
  • Jest 호환 API: describe, it, expect 등 Jest 구문을 그대로 사용할 수 있어 학습 곡선이 낮습니다.
  • 내장 모킹: vi.mock(), vi.spyOn() 등 강력한 모킹 기능을 제공합니다.
  • 커버리지 지원: c8, istanbul 등 다양한 커버리지 제공자와 통합됩니다.
  • 테스트 필터링: 이름, 파일 패턴, 태그 등으로 테스트를 필터링할 수 있습니다.
  • 픽스처: 재사용 가능한 테스트 픽스처를 쉽게 정의하고 관리할 수 있습니다.

설치

npm install -D vitest

기본 사용법

테스트 파일 작성

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

describe('계산기', () => {
  it('두 숫자를 더한다', () => {
    expect(1 + 2).toBe(3)
  })

  it('두 숫자를 뺀다', () => {
    expect(5 - 3).toBe(2)
  })
})

실행

npx vitest

설정

vitest.config.ts 파일에서 설정을 관리합니다:

import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    globals: true,
    environment: 'node',
    coverage: {
      provider: 'v8',
      reporter: ['text', 'json', 'html'],
    },
  },
})

모킹

함수 모킹

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

const mockFn = vi.fn()
mockFn('hello')
expect(mockFn).toHaveBeenCalledWith('hello')

모듈 모킹

import { vi } from 'vitest'

vi.mock('../database', () => ({
  fetchUser: vi.fn(() => ({ name: '테스트 사용자' })),
}))

테스트 필터링

# 이름으로 필터링
npx vitest --testNamePattern "계산기"

# 파일 패턴으로 필터링
npx vitest ./tests/unit/

픽스처

import { beforeAll, afterAll, it, expect } from 'vitest'

let db: Database

beforeAll(async () => {
  db = await createDatabase()
})

afterAll(async () => {
  await db.close()
})

it('데이터를 저장한다', async () => {
  await db.save({ id: 1, name: '항목' })
  const result = await db.find(1)
  expect(result).toEqual({ id: 1, name: '항목' })
})

추가 리소스

관련 스킬