Skip to content
Vitest 1
Main Navigation 가이드API구성고급
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 UI

브라우저 모드

소스 내 테스트

테스트 컨텍스트

테스트 환경

Matcher 확장하기

IDE 통합

디버깅

다른 테스트 러너와의 비교

마이그레이션 가이드

일반적인 오류

성능 향상

API

테스트 API 참조

Mock 함수

Vi

expect

expectTypeOf

assert

assertType

구성

Vitest 구성 파일 관리

Vitest 구성하기

이 페이지에서

소스 내 테스트 ​

Vitest는 Rust의 모듈 테스트와 유사하게, 소스 코드 내에서 테스트를 직접 실행하는 기능을 제공합니다.

이 방식을 사용하면 테스트가 구현 코드와 동일한 클로저를 공유하므로, export되지 않은 private 상태에 대해서도 테스트할 수 있습니다. 또한 개발 과정에서 피드백을 더욱 빠르게 받을 수 있습니다.

설정 ​

소스 파일의 끝에 if (import.meta.vitest) 블록을 추가하고, 그 안에 테스트 코드를 작성하여 시작할 수 있습니다. 다음은 예시입니다.

ts
// src/index.ts

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

// 소스 내 테스트
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 설정에서 includeSource 옵션을 수정하여 src/ 디렉터리 아래의 파일을 포함하도록 설정합니다.

ts
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

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

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

bash
$ npx vitest

프로덕션 빌드 ​

프로덕션 빌드 시에는 설정 파일에서 define 옵션을 설정하여 번들러가 사용하지 않는 코드를 제거(tree shaking)하도록 해야 합니다. Vite를 사용하는 경우 다음 예시를 참고하십시오.

ts
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

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

기타 번들러 ​

unbuild
ts
// build.config.ts
import { defineBuildConfig } from 'unbuild';

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

자세히 알아보기: unbuild

rollup
ts
// rollup.config.js
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
// tsconfig.json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

전체 예제는 test/import-meta에서 확인할 수 있습니다.

참고 사항 ​

이 기능은 다음과 같은 경우에 유용합니다.

  • 작은 범위의 함수 또는 유틸리티에 대한 단위 테스트
  • 프로토타입 제작
  • 인라인 단언 (inline assertions)

컴포넌트 테스트나 E2E 테스트와 같이 복잡한 테스트는 별도의 테스트 파일로 분리하여 작성하는 것을 권장합니다.

Pager
이전브라우저 모드
다음테스트 컨텍스트

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

Copyright (c) 2024 Mithril Contributors

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

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

Copyright (c) 2024 Mithril Contributors