是否可以测试作为间谍参数的函数的内容
is it possible to test the contents of a function that is the parameter of a spy
我正在测试 angular 中的一个指令,出于代码覆盖的目的,我需要进入传递给 remove 函数的第二个参数的那个函数:
Myservice.remove(param1, function() {
//test contents of this..
});
然而 Myservice
被嘲笑,remove
函数是一个间谍:
myservice = {
remove: jasmine.createSpy('Myservice.remove')
}
我已经尝试了callThrough()
和callFake()
,但我相信这些更多只是return删除的结果,而不是覆盖参数功能,所以我自然没有区别.
所以在我的测试中我有以下内容:
it('should do something', function() {
// generic directive setup
expect(myservice.remove).toHaveBeenCalled();
});
这行得通并且测试通过了,但是我无法在参数中涵盖该功能,有什么想法可以继续吗?
答案是调用一个带有正确参数的假函数,然后调用其中的函数。
myservice = {
remove: jasmine.createSpy('Myservice.remove').and.callFake(function(data, callback) {
callback();
});
}
同样的测试通过了,但现在覆盖率完全覆盖了作为参数传入的函数。
我正在测试 angular 中的一个指令,出于代码覆盖的目的,我需要进入传递给 remove 函数的第二个参数的那个函数:
Myservice.remove(param1, function() {
//test contents of this..
});
然而 Myservice
被嘲笑,remove
函数是一个间谍:
myservice = {
remove: jasmine.createSpy('Myservice.remove')
}
我已经尝试了callThrough()
和callFake()
,但我相信这些更多只是return删除的结果,而不是覆盖参数功能,所以我自然没有区别.
所以在我的测试中我有以下内容:
it('should do something', function() {
// generic directive setup
expect(myservice.remove).toHaveBeenCalled();
});
这行得通并且测试通过了,但是我无法在参数中涵盖该功能,有什么想法可以继续吗?
答案是调用一个带有正确参数的假函数,然后调用其中的函数。
myservice = {
remove: jasmine.createSpy('Myservice.remove').and.callFake(function(data, callback) {
callback();
});
}
同样的测试通过了,但现在覆盖率完全覆盖了作为参数传入的函数。