Jest:忽略代码覆盖的行

时间:2016-08-03 09:51:27

标签: code-coverage jestjs istanbul

在Jest中,有没有办法忽略测试覆盖的代码? 我尝试使用

/* istanbul ignore next */

但它似乎不起作用。

5 个答案:

答案 0 :(得分:16)

有效。

(function(global) {

    var defineAsGlobal = true;
    /* istanbul ignore next */
    if(typeof exports === 'object') {
        module.exports = lib;
        defineAsGlobal = false;
    }
    /* istanbul ignore next */
    if(typeof modules === 'object' && typeof modules.define === 'function') {
        modules.define('lib', function(provide) {
            provide(lib);
        });
        defineAsGlobal = false;
    }
    /* istanbul ignore next */
    if(typeof define === 'function') {
        define(function(require, exports, module) {
            module.exports = lib;
        });
        defineAsGlobal = false;
    }
    /* istanbul ignore next */
    defineAsGlobal && (global.lib = lib);
})(this);

示例项目https://github.com/ilyar/sandbox/tree/master/jest

答案 1 :(得分:1)

为以后找到它的任何人更新。

/* istanbul ignore next */ 

可以工作,但请阅读The Jest官方文档:

  

coveragePathIgnorePatterns似乎没有任何作用。

     

确保您没有使用 babel-plugin-istanbul 插件。笑话   包裹伊斯坦布尔,因此也告诉伊斯坦布尔要存放的文件   覆盖范围的仪器。使用babel-plugin-istanbul时,   Babel处理的每个文件都将具有coverage集合   代码,因此coveragePathIgnorePatterns不会忽略它。

可以在这里找到文档:Documentation

因此,要解决此问题,请卸载babel-plugin-istanbul:

  

如果它是仅基于javascript的库,则只能运行npm uninstall --save babel-plugin-istanbulnpm uninstall --save-dev babel-plugin-istanbul   如果您安装的库具有需要链接的本机内容,并且已将其与rnpm链接,则可以执行以下操作:rnpm unlink package_name然后执行步骤1-Aakash Sigdel

此引语来自Aakash Sigdel,在这里找到:quote

答案 2 :(得分:1)

找到了一种解决方法(在注释前后需要空格):

class Foo {
  bar /* istanbul ignore next */ () {
    return 'biu~';
  }
}

答案 3 :(得分:0)

根据 a babel issue thread Istambul 似乎有一个错误,它假定前一行代码以分号终止...

constructor(message: string) {
  // TODO: how do I get Jest code coverage for "super(message)?
  // /* istanbul ignore next */ assumes the preceding line of code is terminated with a ;
    DEBUG: console.log();
    /* istanbul ignore next */
    super(message);

答案 4 :(得分:-1)

对于TypeScript用户:

here似乎与ts-jest不兼容