我已经对各种Angular(1.4.7)指令进行了大量工作单元测试,并且正在使用Karma,Jasmine和Sinon进行测试。
我正在尝试为新指令添加单元测试,这是我目前拥有的唯一使用ojit_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的多个部分中出现了类似的错误。