如何在Jest中忽略代码覆盖的行



在Jest中,有什么方法可以忽略测试覆盖率的代码吗?我试过使用

/* istanbul ignore next */

但它似乎不起作用。

它是有效的。

(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

为以后发现此内容的任何人更新。

/* istanbul ignore next */ 

将工作,但从The Jest官方文件:

coveragePathIgnorePatterns似乎没有任何效果

请确保您没有使用babel插件istanbul插件。开玩笑包裹伊斯坦布尔,因此也告诉伊斯坦布尔什么文件具有覆盖范围集合的仪器。当使用babel插件istanbul时,Babel处理的每个文件都有覆盖范围集合代码,因此coveragePathIgnorePatterns不会忽略它。

文档可以在这里找到:文档

所以为了解决这个问题,卸载babel插件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

找到了一个解决方法(注释前后似乎需要空格):

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

仅适用于使用v8提供程序的用户:文档现在说明了如何忽略不同提供者的行,并链接到更多详细信息。但基本上/* c8 ignore next *//* c8 ignore start */+/*c8 ignore end */都应该能很好地与v8提供者配合使用。

示例:

/* c8 ignore next */
if (process.env.DEBUG) console.log('debug');
/* c8 ignore start */
switch (process.env.DEBUG) {
case '1':
  console.log('some verbosity');
  break;
case '2':
  console.log('a lot of verbosity');
  break;
}
/* c8 ignore end */

在我的案例中,我有一个coverageProvider:'v8',它导致了这个中断。doing:coverageProvider:"babel",修复了它,pragma工作得很好。

根据babel问题线程,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);
}

相关内容

  • 没有找到相关文章

最新更新