使用 Jest 進行愉快的 JavaScript(TypeScript) 測試


一般我們不管是做前端還是后端,為了提高代碼的質量,會選擇一種測試驅動開發(TDD)的辦法來寫代碼進行單元測試。Jest 是 Facebook 團隊開發的一款測試框架,為的是提高開發者的“開發體驗”。我們做單元測試的時候需要分解出一個個獨立的模塊,但是這樣做要寫很多的 mock 代碼(模擬的輔助函數),非常地繁瑣,這是行業的一個“痛點”。如果你和我一樣很懶,而且認同“懶惰即是美德”、“不要重復你自己(DRY)”這些原則的話,那么 Jest 測試框架就是你最好的選擇。如果你用過一些其他測試框架比如 Mocha 和 Jasmine 的話,看一下 Jest 文檔就馬上會用了。

Jest 特性

  • 性能非常好,快速反饋
  • 用法非常簡單,3 分鍾快速上手
  • 容易安裝和運行,無需任何配置
  • 自帶覆蓋率統計工具
  • 可以在沙盒環境運行
  • 自動 watch 你的代碼變動並運行測試
  • 自動 mock 函數
  • 其他測試框架都沒有的快照(snapshot)測試
  • 非常簡單地就能測試異步代碼
  • Vue,Angular,React 框架等等都能用

安裝

使用熟悉的 npm

npm install --save-dev jest

或者也可以試一下用 Yarn,總之二選一

yarn add --dev jest

然后在項目根目錄的package.json配置里面加上這句

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

快速上手的例子


引用一下 Jest 官網http://facebook.github.io/jest/docs/en/getting-started.html的例子。假設我們要寫一個加法函數,TDD開發流程第1步,先寫測試,注意名字要帶有test

// sum.test.js
// 導入代碼文件,test函數第1個參數是要顯示的文字信息,第2個回調函數里面寫測試
// expect期望 加法函數 toBe正確的結果
const sum = require('./sum')

test('1加2等於3', () => {
  expect(sum(1, 2)).toBe(3)
})

TDD 開發流程第 2 步,我們用npm test來運行測試,毫無疑問這個測試會失敗,因為要測試的函數根本不存在。這是非常正確的做法,因為我們如果要成功,先要學會失敗。
TDD 開發流程第 3 步,現在再來實現這個加法函數:

// sum.js
// 文件名很重要,你發現命名規律了嗎?
// 和測試放在同一個目錄,並且要導出
function sum(a, b) {
  return a + b
}
module.exports = sum

然后可以再次運行npm test來看測試結果:

PASS  ./sum.test.js
✓ 1加2等於3 (5ms)

TDD 開發流程第 4 步,不斷強化你的測試,然后又強化你的代碼,重復這 4 個步驟。所謂道高一尺,魔高一丈,測試和代碼都會逐漸變得符合你的需求。

這篇只是 Jest 入門教程,只講了一個非常簡單的例子,人人都會寫,想要了解更多,可以去 Jest 官網http://facebook.github.io/jest查看文檔,全都是些一看就懂的例子,不會有特別深奧的東西,全都靠你熟能生巧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM