TestModule
TestModule
類別代表單一專案中的模組。此類別僅在主執行緒中可用。如果您正在處理執行期任務,請參閱 "Runner API"。
TestModule
實例始終具有 type
屬性,其值為 module
。您可以使用它來區分不同的任務類型:
ts
if (task.type === 'module') {
task; // TestModule
}
擴充套件方法
TestModule
類別繼承了 TestSuite
的所有方法和屬性。本指南將僅列出 TestModule
獨有的方法和屬性。
moduleId
這通常是絕對的 Unix 檔案路徑(即使在 Windows 上也是如此)。如果檔案不在磁碟上,則可以使用虛擬識別碼。此值對應於 Vite 的 ModuleGraph
ID。
ts
'C:/Users/Documents/project/example.test.ts'; // ✅
'/Users/mac/project/example.test.ts'; // ✅
'C:\\Users\\Documents\\project\\example.test.ts'; // ❌
state
ts
function state(): TestModuleState;
與 testSuite.state()
的工作方式相同,但如果模組尚未執行,則可能返回 queued
。
meta 3.1.0+
ts
function meta(): TaskMeta;
在模組執行或收集期間附加的自訂元資料。元資料可以透過在測試執行期間,將屬性指定給 task.meta
物件來附加:
ts
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
ts
function diagnostic(): ModuleDiagnostic;
有關模組的有用資訊,例如持續時間、記憶體使用量等。如果模組尚未執行,所有診斷值將返回 0
。
ts
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;
}