概述
這幾天玩 jest ,我在運行單元測試之后 coverage 總是顯示 unknown,花了很多時間排查原因,最后終於想明白了,記錄下來,供以后開發時參考,相信對其他人也有用。
coverage參數
首先最可能的原因是,命令中沒有帶--coverage
參數。一般 github 的 issue 里面都是說的這個原因。
但是我玩的不是原生jest,而是 vue-cli 的 @vue/cli-plugin-unit-jest 包里面 jest ,包里面已經幫我們配置好了一些參數,包括這個--coverage
參數。我們的package.json文件里面是這么寫的:
"scripts": {
"test:unit": "vue-cli-service test:unit --coverage"
},
所以當執行npm run test:unit
的時候,會自動帶上--coverage
參數。
coverage 需要測試文件
另一個原因是,我們沒有指明需要coverage的文件名。
測試,顧名思義,就是測試文件,如果只有spec.js測試文件,而沒有被測試的文件,當然就沒有coverage了。所以加上被測試的文件即可。
比如報錯的時候我的目錄結構是:
-tests
-unit
-testMatchers.spec.js
后來我把被測試文件放到一個專門的文件夾里面就可以,修復后的文件目錄是:
-tests
-helper
-testMatchers.js
-unit
-testMatchers.spec.js
所以被測試的文件就是./helper/testMatchers.js
,而coverage的覆蓋率指的是對這個文件測試的覆蓋率,並不是./unit/testMatchers.js
這個文件的覆蓋率哦~~