dev*_*vIT 7 vue.js jestjs vuejs2 nyc vue-cli-3
我很难用Jest设置Vue CLI 3以显示测试范围。我已竭尽所能使其正常运行,但仍未显示任何内容:
Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
Run Code Online (Sandbox Code Playgroud)
以下是我的配置摘录:
jest.config.js:
Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
Run Code Online (Sandbox Code Playgroud)
package.json:
....
"scripts": {
"test:unit": "nyc vue-cli-service test:unit"
},
"nyc": {
"check-coverage": true,
"per-file": true,
"lines": 90,
"statements": 90,
"functions": 90,
"branches": 90,
"include": [
"src/**/*.{js,vue}"
],
"exclude": [
"src/*.js"
],
"reporter": [
"lcov",
"text",
"text-summary"
],
"extension": [
".js",
".vue"
],
"verbose": true,
"cache": true,
"all": true
}
Run Code Online (Sandbox Code Playgroud)
如何正确配置Vue CLI 3和Jest以显示测试覆盖率?
ton*_*y19 13
Jest有自己的覆盖工具,因此请nyc
从package.json中删除:
"scripts": {
// "test:unit": "nyc vue-cli-service test:unit" // DELETE
"test:unit": "vue-cli-service test:unit"
},
// "nyc": {...} // DELETE
Run Code Online (Sandbox Code Playgroud)
要启用Jest的覆盖范围,请设置collectCoverage
并collectCoverageFrom
在jest.config.js中(根据vue-test-utils
docs):
collectCoverage: true,
collectCoverageFrom: [
'src/**/*.{js,vue}',
'!src/main.js', // No need to cover bootstrap file
],
Run Code Online (Sandbox Code Playgroud)
运行yarn test:unit
应该产生控制台输出,如下所示:
还请注意,Jest控制台输出仅列出包含可执行JavaScript的文件(methods
适用于Vue SFC)。如果您要处理的是默认的Vue CLI生成的模板,HelloWorld.vue
其中包含no methods
,那么它将不会列出。在上面的屏幕截图中,我添加了一个未使用的方法HelloWorld.vue
来演示Jest的未发现行报告。
Jal*_*ayn 11
虽然@tony19 的回答完全有效,但您不一定需要在自定义笑话配置中添加任何内容。对于使用 Vue CLI 服务构建的项目,只需在package.json
工作正常中添加以下脚本,即可显示 Vue 组件的覆盖范围:
"test:coverage": "vue-cli-service test:unit --coverage",
Run Code Online (Sandbox Code Playgroud)
您还可以添加其他选项,例如更改报告器,以及为该脚本设置独特的 Jest 配置。要获取完整的选项列表,您可以在终端中运行以下命令:
npx vue-cli-service test:unit help
Run Code Online (Sandbox Code Playgroud)
而且,在这些选项中,您会发现collectCoverage
和collectCoverageFrom
可以帮助您将所有内容保留在脚本中,而不是拥有自定义配置文件。
如果您不使用 Vue CLI 插件@vue/cli-plugin-unit-jest
,您仍然可以生成 Vue 组件的测试覆盖率报告。您可以按如下方式配置 Jest:
笑话配置.js
module.exports = {
moduleFileExtensions: ['js', 'json', 'vue'],
transform: {
'^.+\\.js$': 'babel-jest',
'^.+\\.vue$': 'vue-jest'
},
collectCoverage: true,
collectCoverageFrom: ['src/**/*.{js,vue}', '!src/main.js']
}
Run Code Online (Sandbox Code Playgroud)
然后您只需运行即可生成覆盖率报告npx jest
。
覆盖率报告如下所示:
归档时间: |
|
查看次数: |
4190 次 |
最近记录: |