【发布时间】:2016-07-25 03:30:24
【问题描述】:
我正在尝试测试一个 angular2 应用程序。我有一个登录表单,它使用 observable 将数据发送到后端:
doLogin() {
this.usersService.login(this.model)
.subscribe((data) => {
console.log("In observable: " + data.isSuccess);
if (!data.isSuccess) {
this.alerts.push({});
}
});
}
在测试中,我在服务函数上添加了一个间谍,它返回 observable,以便组件可以对其进行操作:
usersService.login.and.returnValue(Observable.of(
<LoginResponse>{
isSuccess: true
}));
一切准备就绪后,我在提交按钮上发送一个事件,触发组件中的 doLogin 函数:
submitButton.dispatchEvent(new Event("click"));
fixture.detectChanges();
它工作正常。不幸的是,当我检查是否在测试中调用了 usersService.login 时:
expect(usersService.login).toHaveBeenCalled();
我得到一个错误,因为 observable 没有完成并且登录还没有被调用。
我应该如何确保在 observable 完成后检查我的间谍?
【问题讨论】:
标签: javascript testing typescript jasmine angular