# vitest ## 選擇vitest/測試原因 1. 太常遇到需要修改改錯的邏輯或是component了,加入test來減少這樣的情況 2. vitest可以與vite完美結合,並且標榜著與jest一樣的語法但是更快的速度 ## 下載的套件 1. vitest 2. vite 3.0 (要注意的地方是vite 3.0只支援特別的node version,所以抱錯的話可以先看是否node version不支援) 4. testing-library 來測試react component ```javascript "@testing-library/user-event": "^14.4.3", //user-event測試 "@testing-library/react": "12.1.2", //測試react component "@testing-library/jest-dom": "^5.16.5", //讓RTL可以使用jest-dom的語法 //https://www.npmjs.com/package/@testing-library/jest-dom "jsdom": "^21.1.0", // vite默認node環境,用jsdom來測試瀏覽器環境 "vitest": "^0.29.1" "@vitejs/plugin-basic-ssl": "^1.0.1", // vite 3.0 up需要下載這個套件 "vite": "^3.0.0", // 需升級到3.0up 才可以使用vitest "@vitest/coverage-c8": "^0.29.1", //vitest 生成coverage ``` ## 測試的範圍 目前只有加測試在 1. `src/utils/utils.test.js` 2. `src/containers/home/HomeUtility/homeUtility.test.js` 3. `src/components/shared/*` 未來希望可以繼續完成unit test來增加test coverage,等到unit test有一定完成度並且商業邏輯的變動比較低之後,可以考慮加入e2e test來模擬實際行為,目前專案變動還是比較大所以不適合引入。 ## 目的 理想情況是未來引入git hook或是ci/cd等方法時,可以在push到remote時,先去跑test的coverage來確保test都有通過並且coverage沒有下降來達到程式品質的維護。