【发布时间】:2016-11-28 02:31:59
【问题描述】:
我使用以下代码,它能够生成 预期 的 mocha 测试(套件和测试)报告,但我无法看到伊斯坦布尔的 mocha 测试覆盖率 我在这里错过了什么?
gulp.task('test', function () {
gulp.src(['./assets/**/js/*.js'])//Here I took it from the repo
.pipe(istanbul())
.pipe(tap(function (f) {
require(f.path);
}))
.on('end', function () {
gulp.src(['test/*spec.js'])//this is the path for my tests
.pipe(mocha({
reporter: 'mochawesome'
}))
.pipe(istanbul.writeReports(
['unit-test-coverage']
));
});
});
以下不会产生任何东西
.pipe(istanbul.writeReports(
['unit-test-coverage']
));
我的项目如下所示
my app
-server.js
-app.js
-contoller
--file1.js
--file2.js
-test
spec1.js
spec2.js
-gulpfile.js
- 我应该在这里放什么? gulp.src(['./assets/**/js/*.js']) ?
- 我应该如何采用我的代码才能使其正常工作?
我使用以下 https://github.com/SBoudrias/gulp-istanbul 和一口摩卡 https://www.npmjs.com/package/gulp-mocha
这就是我运行代码后得到的结果
19 次通过(15 秒)
[mochawesome] Report saved to mochawesome-reports/mochawesome.html
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
----------|----------|----------|----------|----------|----------------|
All files | 100 | 100 | 100 | 100 | |
----------|----------|----------|----------|----------|----------------|
=============================== Coverage summary ===============================
Statements : 100% ( 0/0 )
Branches : 100% ( 0/0 )
Functions : 100% ( 0/0 )
Lines : 100% ( 0/0 )
================================================================================
更新 当我执行以下操作时,它会生成一个报告,但覆盖率似乎不是很好,因为我得到了 100% 的所有测试(我希望 :-)),知道我在这里想念什么吗? 由于 mocha 单元测试运行良好,只是代码覆盖率不佳
.pipe(istanbul.writeReports({
dir: './assets/unit-test-coverage',
reporters: ['html'],
reportOpts: {dir: './unit-test-coverage'}
}));
更新 2
我在 GRUNT 中构建了相同的东西(因为我在这里迷路了 :-( )并且这是有效的!!!!!!
但我仍然想让它在 Gulp 中工作,请帮助!
我尝试拆分所有依赖项并创建这个小 gulp 文件并运行 只是它,仍然是同样的问题
这是新文件,我使用不同的技术但结果相同:(
var gulp = require('gulp');
var istanbul = require('gulp-istanbul');
var mocha = require('gulp-mocha');
gulp.task('pre-test', function () {
return gulp.src(['./assets/**/js/*.js'])
// Covering files
.pipe(istanbul(
{includeUntested: true}
))
.pipe(istanbul.hookRequire());
});
gulp.task('test', ['pre-test'], function () {
return gulp.src(['test/*spec.js'])
.pipe(mocha({
reporter: 'mochawesome'
}))
// Creating the reports after tests ran
.pipe(istanbul.writeReports({
dir: './assets/unit-test-coverage',
reporters: ['html'],
reportOpts: {dir: './unit-test-coverage'}
}))
.pipe(istanbul.enforceThresholds({thresholds: {global: 90}}));
});
gulp.task('default', [ 'test']);
我在这里缺少什么?运行正常的测试文件只是覆盖范围......
【问题讨论】:
-
您似乎没有
assets文件夹。至少“我的项目如下所示”没有。试试return gulp.src(['/**/*.js', '!test/', '!gulpfile.js']).pipe(istanbul(...)) -
@YuryTarabanko - 谢谢 Yury 你给了一些方向,但似乎当我想使用我的文件的根路径时,我应该把它们明确地放在一边?我现在使用下面的模式 './*/**.js', 'app.js',正如你所见,我把 app.js 明确化了,有办法避免吗?
-
@YuryTarabanko - 当我尝试你放置的模式时,我得到了权限错误'/**/*.js',所以我尝试了这个并且它正在工作'./*/**.js', 'app.js' ...您可以添加您的重播作为答案...谢谢!
-
当然。你需要 cwd 相对路径。我错过了点:)
标签: javascript node.js gulp mocha.js istanbul