dan*_*man 7 javascript sinon angularjs karma-runner
我已经为各种Angular(1.4.7)指令进行了大量的工作单元测试,我正在使用Karma,Jasmine和Sinon进行测试.
我正在尝试为新指令添加单元测试,这是我目前唯一使用的指令,$window但我在控制台输出中看到了一个神秘的错误:
TypeError:'undefined'不是对象(评估'this.proxy.toString')
此错误来自sinon.js第2372行.
我在指令单元测试中做了所有'正常'的事情,比如创建一个伪指令作为属性的伪元素:
testElement = document.createElement('div');
testElement.setAttribute('data-my-directive');
document.body.appendChild(testElement);
Run Code Online (Sandbox Code Playgroud)
并编译指令:
$compile(testElement)($scope);
Run Code Online (Sandbox Code Playgroud)
我正在$provide尝试模拟$window对象:
module('app', function ($provide) {
$provide.value('$window', { id: 'test' });
});
Run Code Online (Sandbox Code Playgroud)
但是一旦我尝试$window在被测试的文件中使用,就会抛出上面显示的错误.
正如我所说,我对其他指令,服务和控制器进行了一系列其他单元测试按预期工作,因此所有内容都可以正确设置.这只是这个特殊的测试.
有任何想法吗?
我不确定这是否是同一个错误,但就在几天前,sinon github 上解决了类似问题的修复:
https://github.com/sinonjs/sinon/pull/833
修复包含行:
var callStr = this.proxy ? this.proxy.toString() + "(" : "";
Run Code Online (Sandbox Code Playgroud)
其中空检查是一回事,还有其他几行。
此修复位于lib/sinon/call.jscommit 中的文件中7a18eb5。
我不确定这是否相同,因为文件不同,线路也不同。尽管如此,这还是很有趣,我会尝试最新的 sinon 版本,看看这个问题是否得到解决。但是,如果两个文件中的编码器相同,则 sinon 的多个部分可能会出现类似的错误。
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |