Grunt-Mocha-Test BlanketJS 覆盖范围

Posted

技术标签:

【中文标题】Grunt-Mocha-Test BlanketJS 覆盖范围【英文标题】:Grunt-Mocha-Test BlanketJS Coverage 【发布时间】:2014-08-19 21:31:59 【问题描述】:

我正在尝试使用 GruntJS 的 grunt-mocha-test 插件设置代码覆盖率。我关注了this guide,在“生成覆盖”部分下。

但是,运行 grunt 会生成一个 coverage.html 报告,该报告仅涵盖已运行的测试文件……而不是我的其他代码。

所以:

    有人知道问题出在哪里吗?理想情况下,我不想使用另一个 grunt 插件。 如何过滤我的所有/test/** 文件以使其不包含在覆盖率报告中?

我的普通 mocha 测试通过 grunt 运行良好,只是覆盖率报告是问题。

BlanketJS 的文档在这里并没有真正的帮助。当需要消隐器时,“选项”部分可能有一些东西?

这里有我的 gruntfile:

mochaTest: 
            test: 
                src: watchFiles.mochaTests,
                options: 
                    reporter: 'spec',
                    require: ['server.js', 'app/tests/blanket.js']
                
            ,
            coverage: 
                src: watchFiles.mochaTests,
                options: 
                    reporter: 'html-cov',
                    // use the quiet flag to suppress the mocha console output
                    quiet: true,
                    // specify a destination file to capture the mocha
                    // output (the quiet option does not suppress this)
                    captureFile: 'coverage.html'
                
            
        ,

这是毯子js包装器:

var path = require('path');
var srcDir = path.join(__dirname, '..');

require('blanket')(
    // Only files that match the pattern will be instrumented
    pattern: srcDir
 );
 console.log(srcDir); 

src: watchFiles.mochaTests 只是上面的一个变量,用于保存我要运行的测试数组。

【问题讨论】:

【参考方案1】:

如果有人来过这里,我已经使用如下配置解决了这个问题:

/*
* This is a wrapper to blanket.js used for grunt mocha tests
*/
var path = require('path');
var srcDir = path.join(__dirname, '..');
var antiFilter = path.join(__dirname, '..', 'tests');

require('blanket')(
  // Only files that match the pattern will be instrumented
    pattern: srcDir, 'data-cover-never': antiFilter
);

关键点是“data-cover-never”选项,它指定根据模式过滤掉的内容。

【讨论】:

以上是关于Grunt-Mocha-Test BlanketJS 覆盖范围的主要内容,如果未能解决你的问题,请参考以下文章