我已经对各种Angular(1.4.7)指令进行了大量工作单元测试,并且正在使用Karma,Jasmine和Sinon进行测试。

我正在尝试为新指令添加单元测试,这是我目前拥有的唯一使用oj​​it_code的指令,但是在控制台输出中看到了一个隐秘的错误:



此错误来自2237行的sinon.js。

我正在执行指令单元测试中的所有“正常”操作,例如创建将指令作为属性的假元素:

testElement = document.createElement('div');
testElement.setAttribute('data-my-directive');
document.body.appendChild(testElement);

并编译指令:
$compile(testElement)($scope);

我正在使用$window尝试模拟$provide对象:
module('app', function ($provide) {
    $provide.value('$window', { id: 'test' });
});

但是,一旦我尝试在要测试的文件中使用$window,就会抛出上面显示的错误。

就像我说的那样,我还有许多其他单元测试,它们可以按预期运行其他指令,服务和 Controller ,因此一切似乎都已正确设置。只是这个特殊的测试。

有任何想法吗?

最佳答案

我不确定这是否是相同的错误,但是几天前在sinon github上解决了类似问题的修复程序:

https://github.com/sinonjs/sinon/pull/833

修复包含以下行:

var callStr = this.proxy ? this.proxy.toString() + "(" : "";

空检查是一回事,还有其他几行。

此修复程序位于commit lib/sinon/call.js中的文件7a18eb5中。

我不确定是否相同,因为文件不同,行也不同。尽管如此,这还是非常有趣,我将尝试最新的sinon版本,看看是否可以解决。但是,如果编码器在两个文件中都相同,则可能在sinon的多个部分中出现了类似的错误。

08-25 16:08
查看更多