监视具有多个参数和回调的方法

时间:2018-09-13 07:52:20

标签: javascript typescript jasmine spy spyon

我有如下方法

service.myMethod(reqBody,true, false, false, (success) => {

    },(failure)=>{

    });

我想窥探这个方法并想模拟成功回调,我已经尝试了以下方法

const service = TestBed.get(Service);
spyOn(service, 'myMethod').and.callFake(function (reqBody, success,error) {
        return success({});
    });

它的投掷成功不是功能。 还尝试了以下

spyOn(service, 'myMethod').and.callFake(function (reqBody,true,false,false, success,error) {
        return success({});
    });

显示编译错误。

2 个答案:

答案 0 :(得分:0)

在以下解决方案中 boolean1,boolean2,boolean3会收到值“ true,false,false”,但是您不能在函数级别定义这些值。

spyOn(service, 'myMethod').and.callFake(function (reqBody, boolean1, boolean2, boolean3, success, error) {
    return success({});
});

答案 1 :(得分:0)

以这种方式执行间谍工作,它会搜索success(),这显然在您的代码中不可用。这里没有加载依赖项,这意味着该服务正在作为独立组件运行。

要测试服务,请单独编写该服务的测试,这里您可以使用.and.returnvalue()或.and.returnvalues()代替,这将返回您想要的任何内容。请检查其文档以获取更好的主意(https://jasmine.github.io/2.0/introduction.html#section-Spies:_%3Ccode%3Eand.returnValue%3C/code%3E

否则,请在上面的测试文件中编写一个公共成功函数,并将其声明为公共。