【发布时间】:2018-11-22 13:02:49
【问题描述】:
我想测试在参数中有回调的this.communication.subscribe() 调用:
constructor (private communication: CommunicationProvider)
ngOnInit() {
this.communication.subscribe(() => {
this.router.navigate(["/success"]);
});
}
我已经使用callFake来模拟调用callback()的实现
beforeEach(async(() => {
communicationSpy = jasmine.createSpyObj("CommunicationProvider", ["subscribe"]);
routerSpy = jasmine.createSpyObj<Router>("Router", ["navigate"]);
communicationSpy.subscribe.and.callFake((callback: any) => {
callback();
});
}));
it("should route on callback", (done: DoneFn) => {
setTimeout(() => {
expect(routerSpy.navigate).toHaveBeenCalledWith(["/success"]);
done();
}, 3000);
});
根据代码覆盖率结果,this.router.navigate(["/success"]); 被 callback() 覆盖。
但是"should route on callback" 测试失败了,因为routerSpy.navigate 从未被调用过。
为什么?
【问题讨论】:
标签: angular typescript unit-testing callback jasmine