謝謝邀請!
為什么需要單元測試?
測試的作用當然是為了找出存在的問題,雖然在上線前需要經過QA測試,但是往往有很多邏輯是QA不了解的或者是不容易觸發的,其次做好的QA還是開發者本身,只有自己最了解自己的代碼,可以利用單元測試全方位的對代碼進行體檢,減少線上bug率!
需要單元測試的場景
理論上任何代碼都需要單元測試,雖然對開發者的能力要求不算太高,但是會導致開發周期加長,所以個人理解是高復用率的代碼需要單元測試,比如組件、開源代碼、工具等等,業務代碼不太適合做單元測試!
測試框架
karma
jasmine
mocha
jest
這些比較流行
什么是karma?
不是測試框架,只是一個web服務器,需要自己配置測試框架,比如jasmine等
在連接它的瀏覽器上執行測試代碼,可以做調試,在本地控制臺可以查看單側結果
可以配置多樣的報表
測試框架特點
mocha最流行,社區最成熟,需要引入斷言庫,簡單,靈活,支持promise,也可以添加對generators的支持
jasmine適合tdd測試,沒有依賴,社區大,通過‘done’支持async和promise測試
jestmock簡單,運行速度快,支持dom測試,支持RN測試等
如何選擇框架?
斷言庫是否好用
測試風格:測試驅動or行為驅動
對異步是否支持良好
社區是否活躍
測試結果
測試會生成報告,考慮覆蓋率的四個維度
行覆蓋率:是否每一行都執行了?
函數覆蓋率:是否每個函數都調用了?
分支覆蓋率:是否每個if邏輯都執行了?
語句覆蓋率:是否每一條語句都執行了?