Angular · Senior · Frage 47 von 75
Warum ersetzt dieser Test den von der Komponente genutzten Service nicht?
@Component({ providers: [EditorState] }) class Editor {}
TestBed.configureTestingModule({ providers: [{ provide: EditorState, useValue: fake }] });- 1TestBed-Provider gelten nur für Pipes und erreichen nie Komponenten
- 2
useValuegeht in Tests nicht; stattdessenuseClassmit einem Mock - 3Provider auf Komponentenebene gewinnen;
TestBed.overrideComponentnutzen
Antwort zeigen
Richtige Antwort: Provider auf Komponentenebene gewinnen; TestBed.overrideComponent nutzen
Erklärung
Der Element-Injector der Komponente liegt näher als der Injector des Testmoduls. TestBed.overrideComponent(Editor, { set: { providers: [{ provide: EditorState, useValue: fake }] } }) behebt das.