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

API

Node API

고급 API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

플러그인 API

러너 API

리포터

작업 메타데이터

가이드

테스트 실행

리포터 확장

사용자 지정 풀

Vitest 구성하기

테스트 API 참조

이 페이지에서

작업 메타데이터 ​

WARNING

Vitest는 실험적인 비공개 API를 노출합니다. 하위 호환성을 깨는 변경 사항이 SemVer를 따르지 않을 수 있으므로, 사용할 때 Vitest 버전을 고정하는 것이 좋습니다.

사용자 정의 리포터를 개발하거나 Vitest Node.js API를 사용하는 경우, 다양한 컨텍스트에서 실행되는 테스트의 데이터를 리포터나 사용자 정의 Vitest 핸들러로 전달하는 것이 유용할 수 있습니다.

이를 위해 테스트 컨텍스트에 의존하는 것은 직렬화할 수 없으므로 사용할 수 없습니다. 그러나 Vitest를 사용하면 모든 작업(스위트 또는 테스트)에서 사용할 수 있는 meta 속성을 활용하여 테스트와 Node.js 프로세스 간에 데이터를 공유할 수 있습니다. 이 통신은 단방향이며, meta 속성은 오직 테스트 컨텍스트 내에서만 수정할 수 있다는 점에 유의해야 합니다. Node.js 컨텍스트 내에서 변경된 내용은 테스트에서 볼 수 없습니다.

테스트 스위트 작업의 경우 테스트 컨텍스트 또는 beforeAll/afterAll 훅 내에서 meta 속성을 채울 수 있습니다.

ts
afterAll(suite => {
  suite.meta.done = true;
});

test('custom', ({ task }) => {
  task.meta.custom = 'some-custom-handler';
});

테스트가 완료되면 Vitest는 RPC를 사용하여 결과와 meta를 포함한 작업을 Node.js 프로세스로 보내고, onTestCaseResult 및 작업에 접근 가능한 다른 훅을 통해 이를 보고합니다. 이 테스트 케이스를 처리하려면 리포터 구현에서 사용할 수 있는 onTestCaseResult 메서드를 사용할 수 있습니다.

ts
import type { Reporter, TestCase, TestModule } from 'vitest/node';

export default {
  onTestCaseResult(testCase: TestCase) {
    // custom === 'some-custom-handler' ✅
    const { custom } = testCase.meta();
  },
  onTestRunEnd(testModule: TestModule) {
    testModule.meta().done === true;
    testModule.children.at(0).meta().custom === 'some-custom-handler';
  },
} satisfies Reporter;

주의

Vitest는 Node.js 프로세스와 통신하기 위해 다양한 메서드를 사용합니다.

  • Vitest가 워커 스레드 안에서 테스트를 실행하는 경우, 메시지 포트를 통해 데이터를 보냅니다.
  • Vitest가 자식 프로세스를 사용하는 경우, 데이터는 process.send API를 통해 직렬화된 Buffer로 전송됩니다.
  • Vitest가 브라우저에서 테스트를 실행하는 경우, 데이터는 flatted 패키지를 사용하여 문자열로 변환됩니다.

이 속성은 json 리포터의 모든 테스트에도 포함되어 있으므로, 데이터가 JSON으로 직렬화될 수 있는지 확인해야 합니다.

또한, Error 속성을 설정하기 전에 직렬화했는지 확인해야 합니다.

테스트 실행이 완료되면 Vitest 상태에서도 이 정보를 얻을 수 있습니다.

ts
const vitest = await createVitest('test');
const { testModules } = await vitest.start();

const testModule = testModules[0];
testModule.meta().done === true;
testModule.children.at(0).meta().custom === 'some-custom-handler';

TypeScript를 사용할 때 타입 정의를 확장하는 것도 가능합니다.

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean;
    custom?: string;
  }
}
Pager
이전리포터
다음테스트 실행

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/metadata

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

Copyright (c) 2021-Present Vitest Team