Angular[karma] Observable 上的异步测试

标签 angular typescript rxjs karma-jasmine

我尝试测试异步情况。 我的组件:

  ngOnInit(private service: MyService) {
    this.isLoading = true;
    this.service.getData().subscribe((data) => {
      this.data = data;
      this.isLoading = false;
    });
  }

正如你所看到的,我将“loading”设置为“true”,当检查数据后,“isLoading”变为“false”。 这就是我想测试的。 我尝试使用tick(),whenStable... 我发现 MyService 返回一个带有 mockData 的 Observable,但我无法将 isLoading 捕获为 true。

感谢您的帮助。

最佳答案

it('should ...', done => {
  const dataMock = {};
  spyOn(component['service'], 'getData').and.returnValue(of(dataMock);
  component['service'].getData().pipe(delay(500)).subscribe(data => {
    expect(component.data).toBe(dataMock));
    expect(component.isLoading).toBeFalsy();
    done();
  });

  expect(component.isLoading).toBeTruthy();
});

关于Angular[karma] Observable 上的异步测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55218092/

相关文章:

javascript - 是否有一个库可以实现 Angular 为2的vnc?

angular - 覆盖我的可观察变量会杀死当前订阅者吗?

angular - Angular2 中的 ViewProvider 和 Services 之间的区别?

javascript - 测试装饰构造函数参数

javascript - setInterval 在页面更改后运行

angular - d3.js 或 rxjs 错误? this.svg.selectAll(...).data(...).enter 不是函数

angular - 单击事件不适用于 Angular 4 中的选项标签

javascript - 将订阅者捆绑到进行中的异步请求 - RxJS

javascript - RxJS:如何导入 Just

javascript - 如何从 promise 中的事件处理程序返回值?