Jest:忽略代码覆盖的行

问题描述 投票:23回答:3

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

/* istanbul ignore next */

但它似乎没有用。

code-coverage jestjs istanbul
3个回答
17
投票

有用。

(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


2
投票

适用于以后发现此问题的任何人的更新。

/* istanbul ignore next */ 

可以工作但是从The Jest官方文档中读到:

coveragePathIgnorePatterns似乎没有任何效果。

确保您没有使用babel-plugin-istanbul插件。 Jest包装伊斯坦布尔,因此也告诉伊斯坦布尔哪些文件要用于覆盖集合。当使用babel-plugin-istanbul时,Babel处理的每个文件都有覆盖集合代码,因此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


1
投票

找到了一个解决方法(评论之前和之后的空格似乎是必要的):

class Foo {
  bar /* istanbul ignore next */ () {
    return 'biu~';
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.