iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
1
Modern Web

循序漸進學習 Javascript 測試系列 第 10

Day10 實戰 Jest 配置:準備篇

  • 分享至 

  • xImage
  •  

Jest 是一個非常強大的測試框架,簡單易用又富有彈性。在前幾天的文章中,我們有用到 Jest 的部分,並不需要另設自訂的配置,因為 Jest 在簡單的使用情境時,內建的預設配置已足夠我們達到需求。

但在真實的開發應用情境時,我們經常需要依專案情況及需求設定 Jest 配置,尤其是運行在瀏覽器環境的前端應用程式。因為 Jest 是在 node.js 環境執行測試,所以我們需要特別處理 Webpac loader、dynamic imports、module resolution 等等這些瀏覽器與 node 環境並不完全相容的情況。除此之外,掌握「優化」 Jest 配置的技巧,能讓 Jest 在真實開發時發揮更大的幫助。

之後提到的範例是基於自行定義 Webpac 配置的前端專案,沒有使用 create-react-app 這類的 starter。實際開發時,不見得要將之後每個小節提到的範例都配置到專案中,這樣可能造成你的專案過度設計,你只需要將每個小節範例當作獨立的議題來參考,再考慮是不是適用在現在的開發情境。


安裝與運行 Jest

第一步是將 Jest 安裝到 dev dependency:

npm install --save dev jest

package.json 加上 test script:

"scripts": {
		...
    "test": "jest"
}

現在可以執行 npm run test 看看,假設在還沒有任何測試檔案的情況下,Jest 會拋出 "no files found." 的 Error,代表它找不到任何測試的檔案可以執行。

這時候新建一個 __tests__ 資料夾,裡面新增 example.js 檔案,簡單寫一個 test code:

test('it works', () => {})

Jest 會自動抓取 __tests__ 資料夾內的測試檔案執行。這時候執行 npm run test,已不會拋出錯誤。也可以新增 example.test.js,這種 .test.js 結尾的檔案,跟 __tests__ 資料夾內的檔案一樣,會被 Jest 自動抓取並執行測試。但若檔案結構較複雜的話,建議還是在欲測試的檔案旁邊建立 __tests__ 資料夾比較好尋找跟管理,例如:

src
├── __tests__
│   └── example.js
└── example.js

配置 npm script

假設專案中有 lintbuild script,我們可以新增一個 validate script,執行這個 script 代表專案的 code 是在可運作的狀態,裡面依序執行 lint 檢查、 testbuild production code:

"scripts": {
		"build": "webpack --mode=production",
		"lint": "jest --config test/jest.lint.js",
		"test": "jest"
    "validate": "npm run lint && npm run test && npm run build",
}

上一篇
Day9 理解 Mock 基礎概念:mock 整個 module 及共用 mock module
下一篇
Day11 實戰 Jest 配置:搞定前端測試配置,了解 Jest 如何在 Node 環境測試 Browser code
系列文
循序漸進學習 Javascript 測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言