如何解决正在获取控制台错误:没有当前规范时使用了“期望”,这可能是因为异步测试超时了吗?
这是我在service.ts文件中的代码
private isMessageShown = new BehaviorSubject({ visibility: false});
showMessage() {
const visibilityDetails = {
show: true,};
this.isMessageShown.next(visibilityDetails);
setTimeout(this.hideMessage.bind(this),3000);
}
hideMessage() {
this.isMessageShown.next({ visibility: false});
}
get messageVisibilityInfo() {
return this.isMessageShown.asObservable();
}
与showMessage断言相关的我的service.spec.ts代码
it('should get message status',done => {
const result = service.messageVisibilityInfo;
service.showMessage();
result.subscribe(res => {
expect(res.visibility).toBeTruthy();
done();
});
});
测试用例按预期工作正常,但控制台中出现此错误
Uncaught Error: 'expect' was used when there was no current spec,this could be because an asynchronous test timed out
几天来我一直在尝试解决此错误,我们将不胜感激
解决方法
我在这里遇到了同样的问题,原来我用setTimeout进行了测试。
所以..清除setTimeOut()
,它将运行
如果要实现服务,则必须具有与之关联的UI组件,以便呈现Toast(我希望)。尝试删除计时器并以这种方式实现
ngOnInit(): void {
this.toastObservable.currentToastVisibility.subscribe((data) => {
// Do what every logic or work you want
if (data.visibility) {
setTimeout(() => {
this.toastObservable.hideToast();
},3000);
}
});
}
--spec.ts
it('should call ngOnInit',fakeAsync(() => {
component.ngOnInit();
spyOn(toaster,'hideToast');
tick(3000);
expect(toaster.hideToast).toHaveBeenCalled();
}));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。