Skip to content
Vitest 3
Main Navigation 가이드 & API구성브라우저 모드고급 API
3.2.0
2.1.9
1.6.1
0.34.6

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

한국어

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
Italiano
Polski
Türkçe
čeština
magyar

외관

Sidebar Navigation

소개

Vitest를 선택하는 이유

시작하기

기능

Vitest 구성하기

API

테스트 API 참조

Mock 함수

Vi

expect

expectTypeOf

assert

assertType

가이드

명령줄 인터페이스

테스트 필터링

테스트 프로젝트

리포터

커버리지

스냅샷

모킹

병렬 처리

타입 검사

Vitest UI

소스 내 테스팅

테스트 컨텍스트

테스트 어노테이션

테스트 환경

매처 확장하기

IDE 통합

디버깅

일반적인 오류

마이그레이션 가이드

Vitest 3.0으로 마이그레이션

Jest에서 마이그레이션

성능

테스트 성능 프로파일링

성능 향상

브라우저 모드

고급 API

다른 테스트 러너와의 비교

이 페이지에서

소스 내 테스팅 ​

Vitest는 구현 코드와 함께 소스 코드 내에서 직접 테스트를 실행하는 방식을 제공하며, 이는 Rust의 모듈 테스트와 유사합니다.

이 방식은 테스트가 구현 코드와 동일한 클로저를 공유하게 하여, 별도로 내보내지 않은 비공개 상태의 코드도 테스트할 수 있게 합니다. 또한 개발 피드백 주기를 단축시키는 이점이 있습니다.

WARNING

이 가이드는 소스 코드 내에 테스트를 작성하는 방법을 설명합니다. 별도의 테스트 파일에 테스트를 작성해야 하는 경우, "테스트 작성" 가이드를 따르십시오.

설정 ​

시작하려면 소스 파일 끝에 if (import.meta.vitest) 블록을 추가하고 그 안에 테스트를 작성하십시오. 예를 들면 다음과 같습니다:

ts
// the implementation
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// in-source test suites
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Vitest가 src/ 아래의 파일을 포함하도록 includeSource 구성을 업데이트하십시오:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

이제 테스트를 실행할 수 있습니다.

bash
$ npx vitest

프로덕션 빌드 ​

프로덕션 빌드를 위해서는 번들러가 사용하지 않는 코드 제거(Tree Shaking)를 수행할 수 있도록 설정 파일에 define 옵션을 설정해야 합니다. 예를 들어, Vite에서 다음과 같이 설정합니다:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

다른 번들러 ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

자세히 알아보려면: unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

자세히 알아보려면: Rollup

TypeScript ​

import.meta.vitest에 대한 TypeScript 지원을 받으려면 tsconfig.json에 vitest/importMeta를 추가하십시오:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

전체 예제는 examples/in-source-test에서 확인할 수 있습니다.

참고 사항 ​

이 기능은 다음 경우에 유용할 수 있습니다:

  • 작은 범위의 함수 또는 유틸리티에 대한 단위 테스트
  • 프로토타입 개발
  • 인라인 어서션

컴포넌트 또는 E2E 테스트와 같은 더 복잡한 테스트의 경우, 별도의 테스트 파일을 사용하는 것을 권장합니다.

Pager
이전Vitest UI
다음테스트 컨텍스트

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

MIT 라이선스 하에 배포되었습니다.

Copyright (c) 2021-Present Vitest Team