TestCase
TestCase
クラスは単一のテストを表します。このクラスはメインスレッドでのみ使用可能です。ランタイムタスクの取り扱いについては、「Runner API」を参照してください。
TestCase
インスタンスは常に test
の値を持つ type
プロパティを持ちます。これにより、異なるタスクタイプを区別できます。
if (task.type === 'test') {
task; // TestCase
}
project
テストが属する TestProject
を指します。
module
テストが定義されている TestModule
への直接的な参照です。
name
test
関数に渡されたテストの名前です。
import { test } from 'vitest';
// [!code word:'the validation works correctly']
test('the validation works correctly', () => {
// ...
});
fullName
すべての親スイートを >
記号で区切ったテストの完全な名前です。このテストのフルネームは "the validation logic > the validation works correctly" となります。
import { describe, test } from 'vitest';
// [!code word:'the validation works correctly']
// [!code word:'the validation logic']
describe('the validation logic', () => {
test('the validation works correctly', () => {
// ...
});
});
id
テストのユニークな識別子です。このIDは決定的であり、複数回実行しても同じテストであれば常に同じ値になります。IDはプロジェクト名、モジュールID、テストの順序に基づいて生成されます。
IDの例:
1223128da3_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 { test } from 'vitest'
test('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';
}
テスト収集時のオプションです。
ok
function ok(): boolean;
テストがスイート内で失敗しなかったかどうかを確認します。テストがまだ完了していないか、スキップされた場合は true
を返します。
meta
function meta(): TaskMeta;
テストの実行中にテストにアタッチされたカスタムメタデータです。メタデータは、テスト実行中に ctx.task.meta
オブジェクトにプロパティを割り当てることで、テストにアタッチできます。
import { test } from 'vitest';
test('the validation works correctly', ({ task }) => {
// ...
task.meta.decorated = false;
});
テストがまだ実行を完了していない場合、メタデータは空のオブジェクトになります。
result
function result(): TestResult;
テスト結果です。テストがまだ完了していないか、収集されたばかりの場合、TestResultPending
を返します。
export interface TestResultPending {
/**
* テストは収集済みですが、まだ実行が完了していません。
*/
readonly state: 'pending';
/**
* 保留中のテストにはエラーは含まれません。
*/
readonly errors: undefined;
}
テストがスキップされた場合、戻り値は TestResultSkipped
になります。
interface TestResultSkipped {
/**
* テストは `skip` または `todo` フラグによってスキップされました。
* どちらが使用されたかは `options.mode` オプションで確認できます。
*/
readonly state: 'skipped';
/**
* スキップされたテストにはエラーは含まれません。
*/
readonly errors: undefined;
/**
* `ctx.skip(note)` に渡すことができるカスタムノートです。
*/
readonly note: string | undefined;
}
TIP
別のテストに only
フラグがあるためにテストがスキップされた場合でも、options.mode
は skip
になります。
テストが失敗した場合、戻り値は TestResultFailed
になります。
interface TestResultFailed {
/**
* テストの実行に失敗しました。
*/
readonly state: 'failed';
/**
* テスト実行中にスローされたエラーです。
*/
readonly errors: ReadonlyArray<TestError>;
}
テストが成功した場合、戻り値は TestResultPassed
になります。
interface TestResultPassed {
/**
* テストが正常にパスしました。
*/
readonly state: 'passed';
/**
* テスト実行中にスローされたエラーです。
*/
readonly errors: ReadonlyArray<TestError> | undefined;
}
WARNING
passed
状態のテストでもエラーがアタッチされる場合があることに注意してください。これは、retry
が少なくとも1回トリガーされた場合に発生する可能性があります。
diagnostic
function diagnostic(): TestDiagnostic | undefined;
テストに関する有用な情報(実行時間やメモリ使用量など)を提供します。
interface TestDiagnostic {
/**
* テストの実行時間が `slowTestThreshold` を超えているかどうか。
*/
readonly slow: boolean;
/**
* テストで使用したメモリ量(バイト)。
* この値は、テストが `logHeapUsage` フラグを付けて実行された場合にのみ利用可能です。
*/
readonly heap: number | undefined;
/**
* テストの実行にかかった時間(ミリ秒)。
*/
readonly duration: number;
/**
* テストが開始された時間(ミリ秒)。
*/
readonly startTime: number;
/**
* テストがリトライされた回数です。
*/
readonly retryCount: number;
/**
* `repeats` オプションで設定された、テストが繰り返された回数です。
* テストが繰り返し中に失敗し、`retry` が設定されていない場合、この値は少なくなる可能性があります。
*/
readonly repeatCount: number;
/**
* テストが2回目のリトライでパスしたかどうか。
*/
readonly flaky: boolean;
}
INFO
diagnostic()
は、テストがまだ実行される予定がない場合、undefined
を返します。