Gulp mocha istanbul 免费获得 100%

Gulp mocha istanbul get 100% for nothing

我使用以下代码,它能够生成 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 和 gulp 摩卡咖啡 https://www.npmjs.com/package/gulp-mocha

这就是我得到的代码是运行ning

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']);

我在这里错过了什么?测试文件 运行ning OK 只是覆盖范围...

如评论中所述。

您似乎没有 assets 文件夹。至少 "My project look like following" 没有。尝试

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