TestSuite
TestSuite
クラスは単一のテストスイートを表します。このクラスはメインスレッドでのみ利用可能です。ランタイムタスクを扱っている場合は、「Runner 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 は決定的であり、複数回の実行で同じスイートに対して同じ値になります。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 TaskSuite
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
メタデータが収集中(test
関数の外)にアタッチされた場合、カスタムレポーターの onTestModuleCollected
フックで利用可能になります。