Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数相等断言被代码覆盖率报告破坏_Javascript_Code Coverage_Karma Runner_Istanbul - Fatal编程技术网

Javascript 函数相等断言被代码覆盖率报告破坏

Javascript 函数相等断言被代码覆盖率报告破坏,javascript,code-coverage,karma-runner,istanbul,Javascript,Code Coverage,Karma Runner,Istanbul,我正在开发一个测试框架。要断言两个函数相等,我使用: var a = function(){ return 5; }; var b = function(){ return 5; }; var areEqual = (a.toString() == b.toString()); 我正在用karma运行一些测试,一切都很好,直到我用karma覆盖率报告添加了一个测试覆盖率报告。上面的断言失败了,因为伊斯坦布尔似乎在函数中添加代码2 a.toString() 看起来像: function ()

我正在开发一个测试框架。要断言两个函数相等,我使用:

var a = function(){ return 5; };
var b = function(){ return 5; };

var areEqual = (a.toString() == b.toString());
我正在用karma运行一些测试,一切都很好,直到我用karma覆盖率报告添加了一个测试覆盖率报告。上面的断言失败了,因为伊斯坦布尔似乎在函数中添加代码2

a.toString()
看起来像:

function () {
  __cov_Mgz6NtZP5n6U6J27W7D4rA.f['33']++;
  __cov_Mgz6NtZP5n6U6J27W7D4rA.s['152']++;
  return 5;
}
我试过:

/* istanbul ignore next */
var a = function(){ return 5; };
/* istanbul ignore next */
var b = function(){ return 5; };

但它似乎不起作用。您知道我如何解决这个问题。

您可以使用正则表达式删除这些内容

var aStr = a.toString();
// function () {__cov_Mgz6NtZP5n6U6J27W7D4rA.f['33']++;__cov_Mgz6NtZP5n6U6J27W7D4rA.s['152']++;return 5;}

var aCleanStr = aStr.replace(/__cov.*?;/g, '');
// function () {return 5;}
表达式是
/\uuu-cov.*/g
,其中

  • \uuuCOV
    -将匹配以
    \uuCOV
    开头的子字符串
  • *-将匹配任何字符,直到第一个
    ,因为两次注入之间可能有一些代码,
    这里表示“非贪婪”选项
  • flag
    g
    -从字符串中删除所有这些条目

到目前为止,最好的选择是在另一个karma配置中分离您的覆盖范围。您将能够同时运行这两个,如

呼噜业力:单位

咕哝业力:覆盖范围


在单元上,代码不会被混淆

检查函数相等有什么意义?我正在开发一个测试框架,我不想让开发人员检查两个对象是否相等,它应该适用于所有可能的数据类型,包括函数。它正在工作,但我希望能够运行代码覆盖率报告。