簡體   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