是否可以测试作为间谍参数的函数的内容

时间:2017-06-15 15:34:16

标签: angularjs unit-testing karma-jasmine spy

我在角度和代码覆盖范围内测试指令我需要进入传递给remove函数的第二个参数的函数:

Myservice.remove(param1, function() {
   //test contents of this..
});

然而Myservice被模拟,remove函数是间谍:

myservice = {
    remove: jasmine.createSpy('Myservice.remove')
}

我已尝试callThrough()callFake()但我相信这些更多只是返回删除的结果,而不是覆盖参数功能,所以我自然没有区别。

所以在我的测试中我有以下内容:

it('should do something', function() {
    // generic directive setup
    expect(myservice.remove).toHaveBeenCalled();
});

这是有效的,测试通过了,但是我无法覆盖参数中的那个功能,任何想法如何进行?

1 个答案:

答案 0 :(得分:0)

答案是使用正确的参数调用伪函数然后调用其中的函数。

newWindow.document.write("<img src='" + image +"' style='width: 100%;height:500px;'>");

相同的测试通过,但现在覆盖范围完全覆盖了作为参数传入的函数。