TestSuite
TestSuite
클래스는 단일 테스트 스위트를 나타냅니다. 이 클래스는 메인 스레드에서만 사용할 수 있습니다. 런타임 태스크를 다루는 경우 "러너 API"를 참조하세요.
TestSuite
인스턴스는 항상 suite
값을 가진 type
속성을 가집니다. 이를 사용하여 다른 작업 유형을 구별할 수 있습니다.
if (task.type === 'suite') {
task; // TestSuite
}
project
테스트가 속한 TestProject
를 참조합니다.
module
테스트가 정의된 TestModule
에 대한 직접 참조입니다.
name
describe
함수에 전달된 스위트 이름입니다.
import { describe } from 'vitest';
// [!code word:'the validation logic']
describe('the validation logic', () => {
// ...
});
fullName
모든 상위 스위트를 >
기호로 구분하여 포함하는 스위트의 전체 이름입니다. 예를 들어, 이 스위트의 전체 이름은 "the validation logic > validating cities"입니다.
import { describe, test } from 'vitest';
// [!code word:'the validation logic']
// [!code word:'validating cities']
describe('the validation logic', () => {
describe('validating cities', () => {
// ...
});
});
id
이는 스위트의 고유 식별자입니다. 이 ID는 결정적(deterministic)이며 여러 실행에서 동일한 스위트에 대해 동일합니다. ID는 프로젝트 이름, 모듈 ID 및 스위트 순서를 기반으로 합니다.
ID는 다음과 같습니다.
1223128da3_0_0_0
^^^^^^^^^^ 파일 해시
^ 스위트 인덱스
^ 중첩 스위트 인덱스
^ 테스트 인덱스
TIP
Vitest 3부터 사용할 수 있는 vitest/node
의 generateFileHash
함수로 파일 해시를 생성할 수 있습니다.
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // 상대 경로
undefined // 프로젝트 이름 또는 설정되지 않은 경우 `undefined`
);
DANGER
ID를 구문 분석하려고 하지 마십시오. 시작 부분에 마이너스 기호가 있을 수 있습니다: -1223128da3_0_0_0
.
location
스위트가 정의된 모듈의 위치입니다. 위치는 구성에서 includeTaskLocation
이 활성화된 경우에만 수집됩니다. --reporter=html
, --ui
또는 --browser
플래그가 사용되는 경우 이 옵션은 자동으로 활성화됩니다.
이 스위트의 위치는 { line: 3, column: 1 }
입니다.
import { describe } from 'vitest'
describe('the validation works correctly', () => {
// ...
})
parent
부모 스위트입니다. 스위트가 모듈 내에서 직접 호출된 경우, 부모는 모듈 자체가 됩니다.
options
interface TaskOptions {
readonly each: boolean | undefined;
readonly fails: boolean | undefined;
readonly concurrent: boolean | undefined;
readonly shuffle: boolean | undefined;
readonly retry: number | undefined;
readonly repeats: number | undefined;
readonly mode: 'run' | 'only' | 'skip' | 'todo';
}
스위트가 수집될 때의 옵션입니다.
children
현재 스위트 내의 모든 스위트와 테스트의 컬렉션입니다.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('test', task.fullName);
} else {
// task is TestSuite
console.log('suite', task.name);
}
}
WARNING
suite.children
은 첫 번째 중첩 수준만 반복하며 더 깊이 들어가지 않습니다. 모든 테스트 또는 스위트를 반복해야 하는 경우 children.allTests()
또는 children.allSuites()
를 사용하세요. 모든 것을 반복해야 하는 경우 재귀 함수를 사용하세요.
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// 스위트 처리
visit(task.children);
} else {
// 테스트 처리
}
}
}
ok
function ok(): boolean;
스위트에 실패한 테스트가 있는지 확인합니다. 스위트가 수집 중에 실패한 경우에도 false
를 반환합니다. 이 경우 발생한 오류에 대해서는 errors()
를 확인하세요.
state
function state(): TestSuiteState;
스위트의 실행 상태를 확인합니다. 가능한 반환 값:
- pending: 이 스위트의 테스트가 아직 실행을 마치지 않았습니다.
- failed: 이 스위트에 실패한 테스트가 있거나 수집할 수 없었습니다.
errors()
가 비어 있지 않으면 스위트가 테스트를 수집하는 데 실패했음을 의미합니다. - passed: 이 스위트 내의 모든 테스트가 통과했습니다.
- skipped: 이 스위트는 수집 중에 건너뛰어졌습니다.
WARNING
테스트 모듈에도 동일한 값을 반환하는 state
메서드가 있지만, 모듈이 아직 실행되지 않은 경우 추가로 queued
상태를 반환할 수 있습니다.
errors
function errors(): TestError[];
구문 오류와 같이 테스트 실행 외부에서 수집 중에 발생한 오류입니다.
import { describe } from 'vitest';
describe('collection failed', () => {
throw new Error('a custom error');
});
WARNING
오류는 단순한 객체로 직렬화됩니다. instanceof Error
는 항상 false
를 반환합니다.
meta 3.1.0+
function meta(): TaskMeta;
스위트 실행 또는 수집 중에 스위트에 첨부된 사용자 지정 메타데이터입니다. 메타데이터는 테스트 실행 중 task.meta
객체에 속성을 할당하여 첨부할 수 있습니다.
import { test } from 'vitest';
describe('the validation works correctly', task => {
// 수집 중에 "decorated" 할당
task.meta.decorated = false;
test('some test', ({ task }) => {
// 테스트 실행 중에 "decorated" 할당,
// onTestCaseReady 훅에서만 사용 가능
task.suite.meta.decorated = false;
});
});
TIP
메타데이터가 수집 중에 (테스트 함수 외부에서) 첨부된 경우, 사용자 지정 리포터의 onTestModuleCollected
훅에서 사용할 수 있습니다.