angular - 错误 : No test scheduler initialized when using jasmine-marbles with Spectator in Angular test

标签 angular ngrx angular-spectator

我的组件订阅了一个服务中的 Observable,它通过一个 Ngrx 选择器填充,为了简洁起见,这里概括为:

export class MyService {
  signInFalied$: Observable<boolean>;

  constructor(
    private store: Store<MyAppState>,
  ) {
    this.signInFailed$ = this.store.select(mySelectors.signInFailed);
  }
}

我的组件具有基于此状态值的条件内容,我想测试是否显示了正确的内容。在我的测试中,我为该服务提供了一个模拟:
describe('My Test', () => {
  let spectator: SpectatorHost<MyComponent>;

  const createHost = createHostComponentFactory({
    component: MyComponent,
    declarations: [MyComponent],
    providers: [
      ...,
      mockProvider(MyService, {
        signInFailed$: cold('x', { x: null }),
        ...
      }),
    ],
    imports: [...]
  });
});

当我运行测试时,我得到:

Error: No test scheduler initialized



通过搜索我尝试过 setting my compile target to ES5

我此时也在使用最新版本的 jasmine-marbles:0.6.0

我究竟做错了什么?

最佳答案

cold需要在 async范围。所以你需要添加一个 beforeEach并在 async 中调用它范围:

import { async } from '@angular/core/testing';

describe('My Test', () => {
   beforeEach(async(() => {

       TestBed.configureTestingModule({
           providers: [
              ...,
              mockProvider(MyService, {
                signInFailed$: cold('x', { x: null }),
                ...
              }),
            ],
        })
        .compileComponents()
   });


});

关于angular - 错误 : No test scheduler initialized when using jasmine-marbles with Spectator in Angular test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60980618/

相关文章:

java - 减少 Spring Boot 可执行 jar Angular App 的磁盘空间

angular-spectator - 如何测试 html 输入类型单选是否被选中

Angular Jest 旁观者在测试另一个服务时模拟服务依赖性

javascript - 如何以 Angular 选择按钮

javascript - 在一个模态上显示一个模态,但第二个模态正在自行关闭。 ionic 3

css - 为单独的页面自定义正文的背景颜色

Angular 无法解析 SomeEffect (?) 的所有参数

javascript - 本地存储和ngrx存储

angular - 使用 Jest 和 Spectator 测试 Angular 拦截器的响应