[英]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.