正在获取控制台错误:没有当前规范时使用了“期望”,这可能是因为异步测试超时了吗?

问题描述

这是我在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();
  }));

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...