Spottdienst in einer Komponente - Schein ignoriert

7

Dieses Mal versuche ich, einen Dienst (der HTTP-Aufrufe ausführt) zu verspotten, um eine Komponente zu testen.

%Vor%

Die Dokumentation (Version 2.0.0) erklärt dass Sie den Service verspotten sollten. Verwenden Sie die gleiche TestBed -Konfiguration:

%Vor%

Wenn ich den Test ausführe, bekomme ich:

%Vor%

das wird tatsächlich vom eigentlichen Dienst benutzt, aber nicht vom Schein. Aus irgendeinem Grund wird der Schein nicht injiziert oder benutzt.

Irgendwelche Ratschläge? Danke!

    
youri 13.10.2016, 12:43
quelle

1 Antwort

21

Es liegt an

%Vor%

@Component.providers hat Vorrang vor allen globalen Anbietern, da die Verwendung von @Component.providers den Anbieter nur auf die Komponente beschränkt. Im Test erstellt Angular den mokierten Dienst im Modulbereich und den ursprünglichen Dienst im Komponentenbereich.

Um dieses Problem zu lösen, bietet Angular die Methode TestBed.overrideComponent , mit der wir Dinge wie Vorlagen und Anbieter überschreiben können

%Vor%

Siehe auch:

Paul Samsotha 13.10.2016, 12:51
quelle