Заменяет ли TestBed.overrideModule
ранее добавленных поставщиков?
У меня есть Component
c1
, в котором используется динамически созданный компонент c2
. Я прочитал, что мне нужно использовать overrideModule
, чтобы добавить entryComponents
запись в TestBed
.
Итак, я сделал это
TestBed.configureTestingModule({
declarations: [ NewPracticeQuestionComponent,
DialogBoxComponent,
ShowErrorsComponent],
imports:[ReactiveFormsModule,HttpClientTestingModule],
providers:[WebToBackendInterfaceService,
HelperService,
AuthService,
{provide:QuestionManagementService, useClass:MockQuestionManagementService}] //NOTE I HAVE A DIFFERENT PROVIDER HERE
});
TestBed.overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [DialogBoxComponent]/*DialogBoxComponent is created dynamically (imperatively), soit nee to be ddded in entryComponent*/
}
});
TestBed.compileComponents();
Выше я указал MockQuestionManagementService
в качестве другого поставщика для QuestionManagementService
. Но я замечаю, что при создании компонента Angular
создал QuestionManagementService
!!
, чтобы решить проблему, мне пришлось явно позвонить TestBed.overrideProvider
TestBed.configureTestingModule({
declarations: [ NewPracticeQuestionComponent,
DialogBoxComponent,
ShowErrorsComponent],
imports:[ReactiveFormsModule,HttpClientTestingModule],
providers:[WebToBackendInterfaceService,
HelperService,
AuthService,
{provide:QuestionManagementService, useClass:MockQuestionManagementService}]
});
TestBed.overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [DialogBoxComponent]/*DialogBoxComponent is created dynamically (imperatively), soit nee to be ddded in entryComponent*/
}
});
TestBed.overrideProvider(QuestionManagementService,{useValue: new MockQuestionManagementService},); //THIS ADDED EXPLICITLY
TestBed.compileComponents();
}));
Теперь Angular
добавлено MockQuestionManagementService
. Я неправильно использовал overrideModule
или ожидается поведение TestBed.overrideModule
?