【问题标题】:Gulp mocha istanbul get 100% for nothingGulp mocha istanbul 免费获得 100%
【发布时间】: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
  1. 我应该在这里放什么? gulp.src(['./assets/**/js/*.js']) ?
  2. 我应该如何采用我的代码才能使其正常工作?

我使用以下 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


【解决方案1】:

正如评论中所说的那样。

您似乎没有assets 文件夹。至少“我的项目如下所示”没有它。试试

return gulp
  // all js files from cwd excluding test folder and gulpfile
  .src(['./**/*.js', '!test/', '!gulpfile.js'])
  .pipe(istanbul(...))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多