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

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();
    });
}

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