簡體   English   中英

Angular 單元測試:覆蓋提供者

[英]Angular Unit Test: Override the Provider

我在 Providers 數組中有以下內容。

     {
        provide: EnrolmentService,
        useValue: {
           swapToken: jasmine.createSpy('swapToken')
        }
     }

除了在一個測試用例中我需要實際調用 swapToken() 方法外,我到處都需要 jasmine 偵聽注冊服務的 swapToken 方法。

有人可以建議如何為特定的單元測試覆蓋上述提供程序嗎?

對不起,我沒有仔細閱讀代碼。 所以我假設您發布的提供程序是在configureTestingModule方法的spec文件中指定的

TestBed.configureTestingModule({
    declarations: [...],
    providers: [{
        provide: EnrolmentService,
        useValue: {
           swapToken: jasmine.createSpy('swapToken')
        }
     }]
});

或您在 specfile 模塊中導入的...TestingModule

@Injectable()
public class EnrollmentTestingService {
}
@NgModule({
    providers: [{
        provide: EnrollmentService,
        useClass: EnrollmentTestingService
    }]
})
public class EnrollmentTestingModule {
}

因為您正在使用jasmine創建模擬。

我認為您所要做的就是將這個EnrollmentTestingModule導入到幾乎所有的測試模塊(規范)中,並且在一個例外的規范文件中,只需指定提供者

TestBed.configureTestingModule({
    declarations: [...],
    providers: [{
        provide: EnrolmentService,
        useValue: {
           swapToken: /* something else here */
        }
     }]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM