TestModule
Класс TestModule
представляет собой отдельный модуль в рамках одного проекта. Этот класс доступен исключительно в основном потоке. Для работы с задачами времени выполнения, пожалуйста, обратитесь к разделу "Runner API".
Экземпляр TestModule
всегда имеет свойство type
со значением module
. Это позволяет различать различные типы задач:
if (task.type === 'module') {
task; // TestModule
}
Расширение методов TestSuite
Класс TestModule
наследует все методы и свойства от TestSuite
. В данном руководстве будут перечислены только методы и свойства, уникальные для TestModule
.
moduleId
Обычно это абсолютный путь к файлу в формате Unix (даже в Windows). В случае, если файл не находится на диске, это может быть виртуальный идентификатор. Это значение соответствует идентификатору ModuleGraph
в Vite.
'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 для настройки тестовой среды (runner, моки и т.д.).
*/
readonly prepareDuration: number;
/**
* Время, необходимое для импорта тестового модуля.
* Включает импорт всего содержимого модуля и выполнение callback-функций тестового набора.
*/
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;
}