Typescript(Angular):单元测试订阅

前端之家收集整理的这篇文章主要介绍了Typescript(Angular):单元测试订阅前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的功能来做到这一点

ngOnInit() {
  if (this.session.getToken()) {
    this.isUserLogged = true;
  }

  this.loadingObserver = this.session.loadingObservable.subscribe(loading => this.isLoading = loading);
}

我的测试如下

it('Testing ngOnInit() ...',async(() => {
  let spy = spyOn(services.session,'getToken').and.returnValue('token');
  services.session.loadingObservable.subscribe(any => expect(component.isLoading).toEqual(false));
  component.ngOnInit();
  expect(component.isUserLogged).toEqual(true);
  expect(spy).toHaveBeenCalled();
}));

但在我的应用程序的代码覆盖范围内,订阅包括在内.事实上,期待虚假也有效.

您对如何测试订阅有任何想法吗?

解决方法

是否在订阅调用处理程序代码取决于您订阅的Observable的性质 – 特别是它的“hotness”或“coldness”.阅读这个出色的解释 – https://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html – 并查看您的“loadingObservable”在分类中的位置.但我怀疑正如评论中所建议的那样,你需要强制它在你的单元测试中触发.

猜你在找的Angularjs相关文章