在Jest中,有没有办法忽略测试覆盖的代码? 我尝试使用
/* istanbul ignore next */
但它似乎不起作用。
答案 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);
答案 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-istanbul
或npm 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
不兼容