繁体   English   中英

ngOnDestroy的角单元测试

[英]Angular Unit Testing for ngOnDestroy

我正在使用Jasmine Karma对角组件进行单元测试,并且遇到以下错误

TypeError: this.subscription.unsubscribe is not a function at ScheduledNewContributionsViewComponent.ngOnDestroy (webpack:///./src/app/contributions/scheduled-new-contributions-view/scheduled-new-contributions-view.component.ts?:154:31) at callProviderLifecycles

当我为ScheduledNewContributionsViewComponent运行单元测试时,此错误在控制台中显示。 虽然我的测试通过了,但是控制台窗口充满了这个错误,每次测试都会继续出现。

下面是我的ts文件

 ngOnInit(): void {
     this.subscription = this.contributionService.editContribution$.subscribe(
              data => {
                this.scheduledContributionData = data;
                this.headerTitle = this.contributionService.getLabel('ACCTTAB.COMMONREQUESTS.MANAGECONTRIBUTIONS.EDIT');
}
        this.loadEditScheduledContributionData(this.scheduledContributionData);
      });

ngOnDestroy() {
    // prevent memory leak when component destroyed
    if (this.subscription) 
      this.subscription.unsubscribe();
    // if(this.deleteSubscription)
    // this.deleteSubscription.unsubscribe();
  }

对于contributionService,我创建了存根并模拟了editContribution $

 class ContributionServiceStub {

      editContribution$ = {
        subscribe: function(data) {
          return Observable.of(data);
        }
      }

您的存根函数不正确。 调用subscribe时,它返回的是一个可观察的对象,但它应该返回一个订阅。

class ContributionServiceStub {
  editContribution$ = Observable.of(data);
}

我只是将可观察对象分配给editContribution$属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM