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:
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!
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
Siehe auch:
Tags und Links service angular mocking angular2-testing