TestModule
TestModule
クラスは、単一のプロジェクト内の単一のモジュールを表します。このクラスはメインスレッドでのみ使用可能です。ランタイムタスクを扱う場合は、「Runner API」を参照してください。
TestModule
インスタンスは常に type
プロパティを持ち、その値は module
です。これを使って異なるタスクタイプを区別できます。
if (task.type === 'module') {
task; // TestModule
}
スイートメソッドの拡張
TestModule
クラスは、TestSuite
のすべてのメソッドとプロパティを継承します。このガイドでは、TestModule
に固有のメソッドとプロパティのみを記載します。
moduleId
これは通常、Unix形式の絶対ファイルパスです(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;
}