如何用多个参数调用toHaveBeenCalledWith?

时间:2018-03-29 04:49:43

标签: angularjs unit-testing jasmine

您好我正在Angular JS开发网络应用程序。我正在使用Jasmine框架编写单元测试用例。我想嘲笑一些服务。我无法使用多个参数调用服务。下面是我的单元测试代码。

it('update is allowed false', async(() => {
        let service = fixture.debugElement.injector.get(UserOnboardEndpointMock);
        spyOn(service, 'updateUser').and.callThrough();
        fixture.whenStable().then(() => {
            expect(service.updateUser).toHaveBeenCalledWith(jasmine.any(true,"101"));
        })
    }));

以下是我的服务。

 updateUser<T>(event: boolean, userid: string): Observable<T>{
        var updateUserResult = { result: true } as any;
        return Observable.of<T>(updateUserResult);
    }

我已经尝试过如下呼叫服务,但没有成功。

expect(service.updateUser).toHaveBeenCalledWith(true,"101");
expect(service.updateUser).toHaveBeenCalledWith([true]["101"]);

有人可以帮助我拨打我的模拟服务吗?任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

从 jest 23.0 开始就有 .toHaveBeenNthCalledWith(nthCall, arg1, arg2, ....) https://facebook.github.io/jest/docs/en/expect.html#tohavebeennthcalledwithnthcall-arg1-arg2-

所以你可以做出这样的断言: expect(service.updateUser).toHaveBeenNthCalledWith(1, true,"101");