Skip to content
Vitest 2
Main Navigation 가이드API구성브라우저 모드고급
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

Node API

테스트 러너

작업 메타데이터

리포터 확장하기

커스텀 풀

이 페이지에서

Node API ​

WARNING

Vitest는 실험적인 내부 API를 노출합니다. 주요 변경 사항이 SemVer를 따르지 않을 수 있으므로, 사용할 때 Vitest 버전을 고정하십시오.

startVitest ​

Node API를 사용하여 Vitest 테스트를 시작할 수 있습니다.

js
import { startVitest } from 'vitest/node';

const vitest = await startVitest('test');

await vitest?.close();

startVitest 함수는 테스트를 시작할 수 있는 경우 Vitest 인스턴스를 반환합니다. 다음 경우에는 undefined가 반환됩니다.

  • Vitest가 vite 패키지를 찾지 못한 경우 (일반적으로 Vitest와 함께 설치됩니다)
  • 커버리지가 활성화되어 있고 실행 모드가 "test"인 경우, 그러나 커버리지 패키지가 설치되지 않은 경우 (@vitest/coverage-v8 또는 @vitest/coverage-istanbul)
  • 필요한 환경 패키지가 설치되지 않은 경우 (jsdom/happy-dom/@edge-runtime/vm)

undefined가 반환되거나 테스트 실행 중 오류가 발생하면 Vitest는 process.exitCode를 1로 설정합니다.

watch 모드가 활성화되지 않은 경우, Vitest는 close 메서드를 호출합니다.

watch 모드가 활성화되어 있고 터미널이 TTY를 지원하는 경우, Vitest는 콘솔 단축키를 등록합니다.

두 번째 인수로 필터 목록을 전달할 수 있습니다. Vitest는 전달된 문자열 중 하나라도 파일 경로에 포함된 테스트만 실행합니다.

세 번째 인수를 사용하여 CLI 인수를 전달할 수도 있으며, 이는 모든 테스트 구성 옵션보다 우선 적용됩니다.

또는 네 번째 인수로 전체 Vite 설정을 전달할 수도 있으며, 이는 다른 모든 사용자 정의 옵션보다 우선 적용됩니다.

테스트를 실행한 후 state.getFiles API에서 결과를 얻을 수 있습니다.

ts
const vitest = await startVitest('test');

console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]

Vitest 2.1부터는 state.getFiles와 함께 "Reported Tasks" API를 사용하는 것이 좋습니다. 향후 Vitest는 해당 객체를 직접 반환할 예정입니다.

ts
const vitest = await startVitest('test');

const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);

createVitest ​

createVitest 함수를 사용하여 Vitest 인스턴스를 직접 생성할 수 있습니다. 이 함수는 startVitest와 동일한 Vitest 인스턴스를 반환하지만, 테스트를 시작하거나 필요한 패키지가 설치되었는지 확인하지 않습니다.

js
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});

parseCLI ​

이 메서드를 사용하여 CLI 인수를 파싱할 수 있습니다. Vitest CLI에서 사용하는 것과 동일한 형식으로 CLI 인수의 문자열 (인수는 공백으로 구분됨) 또는 문자열 배열을 허용합니다. 필터와 options를 반환하며, 이는 나중에 createVitest 또는 startVitest 메서드에 전달할 수 있습니다.

ts
import { parseCLI } from 'vitest/node';

parseCLI('vitest ./files.ts --coverage --browser=chrome');

Vitest ​

Vitest 인스턴스는 현재 테스트 모드를 필요로 합니다. 다음 중 하나일 수 있습니다.

  • 런타임 테스트를 실행할 때 test
  • 벤치마크를 실행할 때 benchmark

mode ​

test ​

Test 모드는 test 또는 it 내부의 함수만 호출하며, bench가 발견되면 오류를 발생시킵니다. 이 모드는 테스트 파일을 찾기 위해 구성에서 include 및 exclude 옵션을 사용합니다.

benchmark ​

Benchmark 모드는 bench 함수를 호출하며, test 또는 it가 발견되면 오류를 발생시킵니다. 이 모드는 벤치마크 파일을 찾기 위해 구성에서 benchmark.include 및 benchmark.exclude 옵션을 사용합니다.

start ​

start 메서드를 사용하여 테스트 또는 벤치마크 실행을 시작할 수 있습니다. 문자열 배열을 전달하여 테스트 파일을 필터링할 수 있습니다.

provide ​

Vitest는 vitest.getCoreWorkspaceProject().provide의 약칭인 provide 메서드를 제공합니다. 이 메서드를 사용하면 메인 스레드에서 테스트로 값을 전달할 수 있습니다. 모든 값은 저장되기 전에 structuredClone을 통해 확인되지만, 값 자체는 복제되지 않습니다.

테스트에서 값을 받으려면 vitest 엔트리포인트에서 inject 메서드를 가져와야 합니다.

ts
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000

더 나은 타입 안전성을 위해 ProvidedContext의 타입을 확장하는 것이 좋습니다.

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});
vitest.provide('wsPort', 3000);

declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}

WARNING

엄밀히 말하면 provide는 WorkspaceProject의 메서드이므로 특정 프로젝트에 제한됩니다. 하지만 모든 프로젝트는 코어 프로젝트에서 값을 상속받기 때문에 vitest.provide는 테스트에 값을 전달하는 일반적인 방법이 됩니다.

TIP

이 메서드는 공개 API를 사용하지 않으려는 경우 전역 설정 파일에서도 사용할 수 있습니다.

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
다음테스트 러너

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

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/advanced/api

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

Copyright (c) 2024 Mithril Contributors