TestModule
TestModule
클래스는 단일 프로젝트 내의 단일 모듈을 나타냅니다. 이 클래스는 메인 스레드에서만 사용 가능합니다. 런타임 태스크를 다루는 경우 "러너 API"를 참조하세요.
TestModule
인스턴스는 항상 module
값을 가진 type
속성을 가집니다. 이를 통해 다른 작업 유형과 구별할 수 있습니다.
if (task.type === 'module') {
task; // TestModule
}
스위트 메서드 확장
TestModule
클래스는 TestSuite
의 모든 메서드와 속성을 상속합니다. 이 가이드에서는 TestModule
에만 해당하는 메서드와 속성만 나열합니다.
moduleId
이는 일반적으로 절대 유닉스 파일 경로입니다(Windows에서도). 파일이 디스크에 없을 경우 가상 ID일 수 있습니다. 이 값은 Vite의 ModuleGraph
ID에 해당합니다.
'C:/Users/Documents/project/example.test.ts'; // ✅
'/Users/mac/project/example.test.ts'; // ✅
'C:\\Users\\Documents\\project\\example.test.ts'; // ❌
state
function state(): TestModuleState;
testSuite.state()
와 동일하게 동작하지만, 모듈이 아직 실행되지 않은 경우 queued
를 반환할 수도 있습니다.
meta 3.1.0+
function meta(): TaskMeta;
모듈 실행 또는 수집 중에 모듈에 첨부된 사용자 지정 메타 데이터입니다. 메타 데이터는 테스트 런 중에 task.meta
객체에 속성을 할당하여 첨부할 수 있습니다.
import { test } from 'vitest';
describe('the validation works correctly', task => {
// 수집 중에 "decorated" 할당
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// 테스트 실행 중에 "decorated" 할당 (onTestCaseReady 훅에서만 사용 가능)
task.file.meta.decorated = false;
});
});
TIP
메타 데이터가 수집 중에 (test
함수 외부에서) 첨부된 경우, 사용자 지정 리포터의 onTestModuleCollected
훅에서 사용할 수 있습니다.
diagnostic
function diagnostic(): ModuleDiagnostic;
모듈에 대한 유용한 정보(예: 지속 시간, 메모리 사용량 등)입니다. 모듈이 아직 실행되지 않았다면 모든 진단 값은 0
을 반환합니다.
interface ModuleDiagnostic {
/**
* 환경을 가져오고 초기화하는 데 걸리는 시간입니다.
*/
readonly environmentSetupDuration: number;
/**
* Vitest가 테스트 하니스(러너, 모의 등)를 설정하는 데 걸리는 시간입니다.
*/
readonly prepareDuration: number;
/**
* 테스트 모듈을 가져오는 데 걸리는 시간입니다.
* 여기에는 모듈 내의 모든 것을 가져오고 스위트 콜백을 실행하는 과정이 포함됩니다.
*/
readonly collectDuration: number;
/**
* 설정 모듈을 가져오는 데 걸리는 시간입니다.
*/
readonly setupDuration: number;
/**
* 모듈의 모든 테스트 및 훅의 누적 지속 시간입니다.
*/
readonly duration: number;
/**
* 모듈이 사용한 메모리 양(바이트)입니다.
* 이 값은 `logHeapUsage` 플래그가 설정된 경우에만 사용할 수 있습니다.
*/
readonly heap: number | undefined;
/**
* Vitest가 처리한 모든 외부화되지 않은 의존성을 가져오는 데 걸린 시간입니다.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** 외부화되지 않은 파일을 가져오고 실행하는 데 걸린 시간입니다. */
interface ImportDuration {
/** 파일 자체를 가져오고 실행하는 데 걸린 시간이며, 파일이 수행하는 모든 외부화되지 않은 가져오기는 포함하지 않습니다. */
selfTime: number;
/** 파일과 모든 가져오기를 가져오고 실행하는 데 걸린 시간입니다. */
totalTime: number;
}