Vitest 的設計考慮了現代開發。這就是它脫穎而出的原因:
Vitest 以 Vite 作為基礎,利用其閃電般快速的熱模組替換 (HMR) 和 esbuild 進行捆綁和轉譯。結果是:
在效能基準測試中,由於使用了 Vite 最佳化的建置管道,Vitest 始終大幅領先 Jest。
Framework | Time to run 500 tests |
---|---|
Jest | ~8 seconds |
Vitest | ~3 seconds |
Mocha | ~6 seconds |
注意:這些基準可能會根據項目複雜性和系統規格而有所不同。
Vitest 與 Jest 相容,這表示您可以透過最少的變更重複使用大部分現有的測試套件。它還支援開箱即用的流行工具,如 TypeScript、JSX 和 ESM。
---
讓我們深入了解在 TypeScript 專案中設定 Vitest。我們將使用 React 專案來示範這一點,但 Vue 3 或 Node.js 專案的步驟類似。
npm install --save-dev vitest
對於使用 React 的項目,您還需要 React 測試庫:
npm install --save-dev @testing-library/react @testing-library/jest-dom
建立或更新您的 vite.config.ts 以啟用 Vitest:
import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], test: { globals: true, environment: 'jsdom', // Use 'node' for Node.js projects setupFiles: './test/setup.ts', }, });
設定檔用於配置測試環境。建立一個 test/setup.ts 檔案:
導入 '@testing-library/jest-dom';
更新您的 package.json 以包含測試腳本:
{ "scripts": { "test": "vitest" } }
---
Vitest 提供了類似 Jest 的 API,讓編寫測驗變得簡單。這是一個簡單的例子:
想像你有一個 React 元件:
// src/components/Greeting.tsx import React from 'react'; type GreetingProps = { name: string; }; export const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}!</h1>; };
為元件建立測試檔案:
// src/components/__tests__/Greeting.test.tsx import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { Greeting } from '../Greeting'; describe('Greeting Component', () => { it('renders the correct greeting', () => { render(<Greeting name="Vitest" />); expect(screen.getByText('Hello, Vitest!')).toBeInTheDocument(); }); });
使用以下命令執行測試:
npm 運行測試
您將看到與此類似的輸出:
✓ Greeting 元件渲染正確的問候語
---
Vitest直接支援模擬模組與函數:
import { vi } from 'vitest'; const mockFn = vi.fn(); mockFn(); expect(mockFn).toHaveBeenCalled();
快照測驗非常簡單:
import { render } from '@testing-library/react'; import { expect } from 'vitest'; import { Greeting } from '../Greeting'; test('matches snapshot', () => { const { container } = render(<Greeting name="Vitest" />); expect(container).toMatchSnapshot(); });
使用 Vitest 的 CLI 選項來測量效能:
vitest --run --coverage
---
Vitest 是現代測試的一個引人注目的選擇,它提供由 Vite 提供支援的速度、簡單性和豐富的功能。無論是從 Jest 遷移還是重新開始,Vitest 都能提供出色的開發人員體驗,並確保您的測試與程式碼一樣快速運作。
在您的下一個專案中嘗試 Vitest,體驗不同之處!
訪問網站
維特
以上是使用 Vitest 進行單元測試:下一代測試框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!