Test Controller mit injiziertem Service innerhalb angularJS mit Jasmin

8

Ich versuche zu verstehen, wie ich meinen Code mit Jasmin und angularJS testen kann. Ich habe ein Testprojekt mit einem Controller und einem injizierten Dienst geschrieben. Jetzt möchte ich den Controller testen und versuchen, den injizierten Dienst zu verspotten. Aber ich habe keine Möglichkeit gefunden, die Funktion "Arrived" von meinem Controller zu testen. Hier ist meine Antwort: Ссылка

controller.js:

%Vor%

services.js:

%Vor%

Ich habe ähnliche Erklärungen gefunden, wo $ provide die richtige Lösung sein könnte ( Wie kann ich Jasmin-Test für Winkelregler und Service so schreiben? ) oder createSpy ( Wie verspotten Sie Angular-Service, der eine Funktion ist? ), aber ich konnte nicht verstehen, wenn ich $ Provider brauche .factory oder $ provider.value oder wann sollte ich createSpy verwenden?

Ich würde mich freuen, wenn jemand mir helfen könnte, die Unterschiede zu verstehen und den deaktivierten Code in meinem jsFiddle bekommt ( Ссылка Beispiel läuft und läuft ...

    
burgerS 11.08.2013, 19:14
quelle

1 Antwort

10

Sie sollten $provide.value verwenden, um die ursprüngliche Dienstinstanz durch eine mokierte zu ersetzen:

%Vor%

Ich weiß wirklich nicht, warum $provide.value funktioniert, aber $provide.factory nicht. Ich werde später versuchen, mir den Angular-Code anzusehen, damit ich es herausfinden kann. Ich werde diese Antwort aktualisieren, wenn ich etwas finde.

Über Spione sollten Sie sie verwenden, wenn Sie testen möchten, dass Ihre Mocks so verwendet werden, wie sie sollen. Dazu gehört das Überprüfen von Parametern und Aufrufen. Hier ist Ihr Code geändert, um einen Spion zu verwenden:

%Vor%

Hier ist Ihr jsFiddle .

    
Michael Benford 11.08.2013, 20:48
quelle