Skip to content
Vitest 2
Main Navigation 指南API配置瀏覽器模式高級
2.1.9
1.6.1
0.34.6

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

繁體中文

English
简体中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

外觀

Sidebar Navigation

Node API

測試執行器

任務元數據

擴充報告器

自訂池

本頁導覽

Node API ​

WARNING

Vitest 公開了實驗性的私有 API。重大變更可能不遵循 SemVer,使用時請釘選 Vitest 的版本。

startVitest ​

您可以使用其 Node API 開始執行 Vitest 測試:

js
import { startVitest } from 'vitest/node';

const vitest = await startVitest('test');

await vitest?.close();

如果測試可以啟動,startVitest 函數會返回 Vitest 實例。 如果發生以下情況之一,則會返回 undefined:

  • Vitest 找不到 vite 套件(通常與 Vitest 一起安裝)。
  • 如果啟用了覆蓋率(coverage)且執行模式為 "test",但未安裝覆蓋率套件(@vitest/coverage-v8 或 @vitest/coverage-istanbul)。
  • 如果未安裝環境套件(jsdom / happy-dom / @edge-runtime/vm)。

如果返回 undefined 或測試在執行期間失敗,Vitest 會將 process.exitCode 設定為 1。

如果未啟用監看模式(watch mode),Vitest 會呼叫 close 方法。

如果啟用了監看模式且終端支援 TTY,Vitest 會註冊控制台快捷指令。

您可以將篩選器清單作為第二個參數傳遞。 Vitest 將僅執行在其檔案路徑中包含至少一個傳遞字串的測試。

此外,您可以使用第三個參數傳遞 CLI 參數,這將覆寫任何測試配置選項。

或者,您可以將完整的 Vite 配置作為第四個參數傳遞,這將優先於任何其他使用者定義的選項。

執行測試後,您可以從 state.getFiles API 獲取結果:

ts
const vitest = await startVitest('test');

console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]

自 Vitest 2.1 起,建議將 "已報告任務" API 與 state.getFiles 一同使用。 未來,Vitest 將直接返回這些物件:

ts
const vitest = await startVitest('test');

const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);

createVitest ​

您可以使用 createVitest 函數自行創建 Vitest 實例。 它返回與 startVitest 相同的 Vitest 實例,但不會啟動測試,也不會驗證已安裝的套件。

js
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});

parseCLI ​

您可以使用此方法解析 CLI 參數。 它接受字串(其中參數由單個空格分隔)或 Vitest CLI 使用的相同格式的 CLI 參數字串陣列。 它返回一個篩選器和 options,您可以稍後將其傳遞給 createVitest 或 startVitest 方法。

ts
import { parseCLI } from 'vitest/node';

parseCLI('vitest ./files.ts --coverage --browser=chrome');

Vitest ​

Vitest 實例需要當前的測試模式。 它可以是:

  • test:執行執行階段測試時。
  • benchmark:執行基準測試時。

mode ​

test ​

測試模式只會調用 test 或 it 內的函數,並在遇到 bench 時會拋出錯誤。 此模式使用配置中的 include 和 exclude 選項來尋找測試檔案。

benchmark ​

基準測試模式會調用 bench 函數,並在遇到 test 或 it 時會拋出錯誤。 此模式使用配置中的 benchmark.include 和 benchmark.exclude 選項來尋找基準測試檔案。

start ​

您可以使用 start 方法開始執行測試或基準測試。 您可以傳遞字串陣列來篩選測試檔案。

provide ​

Vitest 提供了 provide 方法,它是 vitest.getCoreWorkspaceProject().provide 的簡寫。 使用此方法,您可以將值從主線程傳遞到測試中。 所有值在儲存之前都會使用 structuredClone 進行檢查,但值本身不會被克隆。

若要在測試中接收這些值,您需要從 vitest 進入點導入 inject 方法:

ts
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000

為了更好的類型安全,我們鼓勵您擴展 ProvidedContext 的類型:

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});
vitest.provide('wsPort', 3000);

declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}

WARNING

從技術上來說,provide 是 WorkspaceProject 的方法,因此它僅限於特定項目。 但是,所有項目都會繼承核心項目中的值,這使得 vitest.provide 成為將值傳遞到測試的通用方式。

TIP

此方法也適用於 全域設定檔,若您不想使用公共 API:

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
下一頁測試執行器

以 MIT 授權條款 發布。

版權所有 (c) 2024 Mithril Contributors

https://v2.vitest.dev/advanced/api

以 MIT 授權條款 發布。

版權所有 (c) 2024 Mithril Contributors