Skip to content
Vitest 3
Main Navigation 指南 & API配置瀏覽器模式進階 API
3.2.0
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

簡介

為何選擇 Vitest

快速入門

功能特色

配置參考

API

測試 API 參考

模擬函式

Vi

expect

expectTypeOf

assert

assertType

指南

命令列介面

測試篩選

測試專案

報告器

程式碼覆蓋率

快照

模擬(Mocking)

平行化

型別測試

Vitest UI

內聯測試

測試上下文

測試註解

測試環境

擴展匹配器

IDE 整合

偵錯

常見錯誤

遷移指南

遷移到 Vitest 3.0

從 Jest 遷移

效能

測試效能分析

提升效能

瀏覽器模式

進階 API

與其他測試執行器的比較

本頁導覽

與其他測試執行器的比較 ​

Jest ​

Jest 透過為大多數 JavaScript 專案提供開箱即用的支援、易用的 API(it 和 expect),以及大多數設定所需的完整測試功能(快照、模擬、覆蓋率),在測試框架領域中佔據了主導地位。我們感謝 Jest 團隊和社群創造了令人愉悅的測試 API,並促成了許多現已成為網路生態系統標準的測試模式。

您可以在 Vite 設定中使用 Jest。@sodatea 開發了 vite-jest,旨在為 Jest 提供一流的 Vite 整合。Jest 中最後的 問題 已被解決,因此這對於您的單元測試來說是一個有效的選項。

然而,在一個 Vite 已能支援大多數常見網路工具(TypeScript、JSX、最流行的 UI 框架)的環境中,Jest 則代表了重複的複雜性。如果您的應用程式由 Vite 提供支援,那麼擁有兩個不同的管道來配置和維護是不合適的。使用 Vitest,您可以將開發、建置和測試環境的配置整合為單一管道,共享相同的插件和相同的 vite.config.js。

即使您的函式庫沒有使用 Vite(例如,如果它是使用 esbuild 或 Rollup 建置的),Vitest 仍然是一個值得考慮的選項,因為它能讓您的單元測試執行得更快,並且由於使用 Vite 即時熱模組重新載入(HMR)的預設監聽模式,能顯著提升開發者體驗 (DX)。Vitest 提供了與大多數 Jest API 和生態系統函式庫的相容性,因此在大多數專案中,它應該能直接取代 Jest。

Cypress ​

Cypress 是一個基於瀏覽器的測試執行器,也是 Vitest 的補充工具。如果您想使用 Cypress,我們建議將 Vitest 用於應用程式中的所有無頭邏輯,並將 Cypress 用於所有基於瀏覽器的邏輯。

Cypress 被稱為端到端測試工具,但其新的元件測試執行器對測試 Vite 元件有極佳的支援,是測試任何在瀏覽器中渲染內容的理想選擇。

基於瀏覽器的執行器,如 Cypress、WebdriverIO 和 Web Test Runner,將會捕捉到 Vitest 無法捕捉到的問題,因為它們使用真實的瀏覽器和真實的瀏覽器 API。

Cypress 的測試核心專注於判斷元素是否可見、可訪問和可互動。Cypress 專為 UI 開發和測試而設計,其開發者體驗 (DX) 的核心在於驅動測試您的視覺元件。您會看到您的元件與測試報告一同渲染。一旦測試完成,元件仍可保持互動性,您可以使用瀏覽器開發者工具除錯任何發生的錯誤。

相比之下,Vitest 專注於為極速的「無頭」測試提供最佳的開發者體驗 (DX)。像 Vitest 這樣的基於 Node 的執行器支援各種部分實現的瀏覽器環境,例如 jsdom,它們提供了足夠的功能,讓您可以快速單元測試任何引用瀏覽器 API 的程式碼。代價是這些瀏覽器環境在實現功能方面存在限制。例如,jsdom 缺少許多功能,例如 window.navigation 或排版引擎(offsetTop 等)。

最後,與 Web Test Runner 相比,Cypress 測試執行器更像是一個 IDE,而非單純的測試執行器,因為您還可以在瀏覽器中看到真實渲染的元件,以及其測試結果和日誌。

Cypress 也一直在將 Vite 整合到他們的產品中:使用 Vitesse 重建其應用程式的 UI,並利用 Vite 來推動其專案開發。

我們認為 Cypress 並不適合用於單元測試無頭程式碼,但若結合使用 Cypress(用於 E2E 和元件測試)與 Vitest(用於單元測試),則能滿足您應用程式的測試需求。

WebdriverIO ​

WebdriverIO 與 Cypress 類似,是另一種基於瀏覽器的測試執行器,也是 Vitest 的補充工具。它可以用作端到端測試工具,也可以用於測試 web 元件。它甚至在內部使用了 Vitest 的部分元件,例如用於元件測試中的模擬和存根。

WebdriverIO 具有與 Cypress 相同的優勢,讓您可以在真實瀏覽器中測試您的邏輯。然而,它使用實際的 web 標準 進行自動化,這克服了在 Cypress 中執行測試時的一些取捨和限制。此外,它還允許您在行動裝置上執行測試,讓您能夠在更多環境中測試您的應用程式。

Web Test Runner ​

@web/test-runner 在無頭瀏覽器中執行測試,提供與您的網路應用程式相同的執行環境,且無需模擬瀏覽器 API 或 DOM。這也使得在真實瀏覽器中使用開發者工具進行調試成為可能,儘管不像 Cypress 測試那樣,沒有顯示用於逐步執行測試步驟的 UI。

若要將 @web/test-runner 與 Vite 專案搭配使用,請安裝 @remcovaes/web-test-runner-vite-plugin。@web/test-runner 不包含斷言或模擬函式庫,因此需要您自行添加。

uvu ​

uvu 是一個適用於 Node.js 和瀏覽器的測試執行器。它在單一線程中執行測試,因此測試之間不隔離,可能會互相影響或洩漏到其他檔案。然而,Vitest 使用工作線程來隔離測試並平行執行。

在轉換程式碼方面,uvu 依賴於 require 和 loader 鉤子。Vitest 使用 Vite,因此檔案能透過 Vite 插件系統的強大功能進行轉換。在一個 Vite 已能支援大多數常見網路工具(TypeScript、JSX、最流行的 UI 框架)的環境中,uvu 則代表了複雜度的重複。如果您的應用程式由 Vite 提供支援,那麼擁有兩個不同的管道來配置和維護是不合適的。使用 Vitest,您可以將開發、建置和測試環境的配置整合為單一管道,共享相同的插件和相同的配置。

uvu 不提供智慧監聽模式來重新執行已變更的測試,而 Vitest 由於使用 Vite 即時熱模組重新載入(HMR)的預設監聽模式,能顯著提升您的開發者體驗 (DX)。

uvu 是執行簡單測試的快速選擇,但 Vitest 對於更複雜的測試和專案來說可能更快、更可靠。

Pager
上一頁進階 API

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team

https://vitest.dev/guide/comparisons

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team