近期為了解決 import.meta 無法順利使用 Jest 來進行單元測試的問題,於是改用 vite 為基底並盡可能相容 Jest 語法的 vitest。轉移後,測試速度有感變快。另有著監聽測試檔案、無需安裝過多的轉換器、可使用 import.meta 等好處,或許這就是採用 ESbuild 的優勢吧。
內容
官方網站:https://vitest.dev/
步驟
1. 將你的 package.json 內與 jest 相關的套件全數移除
2. 安裝 vitest
3. 在 vite.config.js | ts 中,新增設定檔
1 2 3 4 5 6 7 8 9 10 11 |
test: { globals: true, // global 注入值,這樣你就無需一個個引入 environment: 'jsdom', // 預設值,如果未安裝會提醒你 setupFiles: './src/tests/vitest/setup.ts', // 如同 jest,也可先給設定檔 include: ['./src/tests/vitest/**/*.(spec|test).ts'], // 告知檔案位置 coverage: { all: false, // 預設以「所有文件」為基準。關閉時,則是以配對到的文件為準 enabled: true, reporter: ['text', 'json', 'html'], // 報告的檔案格式 }, } |
4. 將原有測試中的 jest 變量改成 vi,就完成絕大部分了。剩下的就一個個調整後即可
參考資料
1. Vitest Next Generation Testing Framework
2. How to migrate from Jest to Vitest without headaches!
3. TS1343: The ‘import.meta’ meta-property is only allowed when the ‘–module’ option is ‘es2020’, ‘esnext’, or ‘system’
4. NutUI 单元测试:从 jest 到 vitest