如何以角度测试属于另一个服务的可观察对象

时间:2019-03-29 13:26:32

标签: angular karma-jasmine

$loggedIn = new BehaviorSubject<boolean>(false);

constructor(private authHttp: AuthenticatedHttp, private httpResponseHandlerService: HttpResponseHandlerService) {
    this.$loggedIn.next(!this.jwtHelper.isTokenExpired(this.getToken()));
    if (this.$loggedIn.getValue()) {
      this.checkAuth().subscribe((response) => {
        if (!response) {
          this.logout();
        }
      });
    }
  }

有一个$loggedIn值是可以观察到的,我需要在我的this.$loggedIn.next(true)中创建一个存根值,该值应该为.spec.ts

1 个答案:

答案 0 :(得分:0)

您可以监视this.jwtHelper.isTokenExpired()以便返回测试所需的值。您可能仅有的陷阱是this.jwtHelper是服务类的私有成员,因此监视起来并不容易。在这种情况下,测试可能建议您通过创建另一个私有方法来重新设计您的类:

private isTokenExpired(): boolean {
    return this.jwtHelper.isTokenExpired(this.getToken());
}

因此,您可以在测试中对此进行监视:

spyOn(yourService, 'isTokenExpired').and.returnValue(false);