一、介紹
Jest 是 Facebook 出品的一個測驗框架,相對其他測驗框架,其一大特點就是就是內置了常用的測驗工具,比如自帶斷言、測驗覆寫率工具,實作了開箱即用,
此外, Jest 的測驗用例是并行執行的,而且只執行發生改變的檔案所對應的測驗,提升了測驗速度,
二、簡單嘗試 Jest
啟動一個專案:

安裝 Jest
全域:npm install -g jest 或區域: npm install -D jest
在 package.json 中指定 test 腳本:

Jest 的測驗腳本名形如*.test.js,不論 Jest 是全域運行還是通過 npm test 運行,它都會執行當前目錄下所有的*.test.js 或 *.spec.js 檔案、完成測驗
基本使用:
用例表示:
test(‘用例描述’, () => { 回呼函式表示成功和失敗的輸出 }) 函式來描述一個測驗用例
測驗成功:

測驗失敗:其中 toBe(‘Hello world’) 便是一句斷言,若測驗失敗,會標識出失敗的斷言位置

用例的預處理或后處理(鉤子函式、生命周期)
對測驗檔案中所有的用例進行統一的預處理,可以使用 beforeAll() 函式;
而如果想在每個用例開始前進行都預處理,則可使用 beforeEach() 函式,
后處理,也有對應的 afterAll() 和 afterEach() 函式,
代碼:

結果:



測驗異步代碼:
對于異步回呼,向其傳入并執行 done 函式, Jest 會等 done 回呼執行結束后,結束測驗


對于 Promise 控制的異步代碼,可以直接在 then 回呼中進行斷言,只要保證在用例中回傳該 Promise 物件即可


測驗覆寫率
Jest 內置了測驗覆寫率工具 istanbul,要開啟,可以直接在命令中添加 --coverage 引數,或者在 package.json 檔案進行更詳細的配置,

運行 istanbul 除了會在終端展示測驗覆寫率情況,還會在專案下生產一個 coverage 目錄,內附一個測驗覆寫率的報告,讓我們可以清晰看到分支的代碼的測驗情況
運行 jest --coverage 可看到產生的報告里展示了代碼的覆寫率和未測驗的行數:

模擬函式
使用 mock 函式 jest.fn() 生成一個 Mock 函式
所有的 mock 函式都有這個特殊的 .mock 屬性,它保存了關于此函式如何被呼叫、呼叫時的回傳值的資訊
為了測驗函式,我們可以使用一個 mock 函式,然后檢查 mock 函式的狀態來確保回呼函式如期呼叫,

通用建議:

適合引入測驗的場景:
- 需要長期維護的專案,它們需要測驗來保障代碼可維護性、功能的穩定性
- 較為穩定的專案、或專案中較為穩定的部分,給它們寫測驗用例,維護成本低
- 被多次復用的部分,比如一些通用組件和庫函式,因為多處復用,更要保障質量
三、Jest 在 Vue 中的使用
Vue 中原有的 Jest

it是的別名test,所以它們是完全一樣的

結果:

Vue Test Utils 使我們的測驗具有 “Vue 意識”,讓我們能夠輕松地在 Jest 測驗中與 Vue 組件進行互動,沒有它,我們只能單純對 JavaScript 代碼撰寫測驗,而不能針對 Vue 撰寫測驗,


開發模式
TDD: 測驗驅動開發,英文為Testing Driven Development,強調的是一種開發方式,以測驗來驅動整個專案,即先根據介面完成測驗撰寫,然后在完成功能是要不斷通過測驗,最終目的是通過所有測驗
BDD: 行為驅動測驗,英文為Behavior Driven Development,強調的是寫測驗的風格,即測驗要寫的像自然語言,讓專案的各個成員甚至產品都能看懂測驗,甚至撰寫測驗
TDD和BDD有各自的使用場景,BDD一般偏向于系統功能和業務邏輯的自動化測驗設計;而TDD在快速開發并測驗功能模塊的程序中則更加高效,以快速完成開發為目的,
兩者不是一個層級的東西, BDD 包含 TDD,
Jest學習檔案
Vue Test Utils
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413368.html
標籤:其他
上一篇:C段掃描
