2016-06-10 9 views
0

Bin neu zu schreiben Unit Testfall in Jasmin..Ich habe Zweifel über das Laden der Module in der Einheit Testfall .. Ein Szenario, wo meine komplette REST-Anwendung mit AngularJS hat den gleichen Modulnamen, aber mit verschiedenen Controllern, Direktiven und Factory Services..Wenn ich das Modul einfach durch HinzufügenTest Modul, Controller und Factory Service mit Jasmine-Karma

laden würde module("module name") ---- Bedeutet dies, dass auch alle Controller, Factory Service und Richtlinien laden zusammen damit?

Wenn mein Modul 100 Factory-Dienste hat, dann ist es Pflicht, alle Dienste im BeforeEach-Block zu verspotten oder nur den Dienst zu verspotten, für den ich den Unit-Testfall schreibe?

Wenn der Factory-Dienst, für den der Komponententest geschrieben wird, eine Abhängigkeit von anderen Diensten hat, sollten diese Dienste auch in beforeEach() blockiert werden, wobei alle abhängigen Dienstmethoden ausspioniert werden ??

Wenn der Factory-Service, der zu verspotten ist, in einem Controller vorhanden ist, sollte der Controller zuerst und dann der Factory-Service verspottet werden ???

Gibt es eine spezielle Methode, um eine Methode auszuspionieren, die Argumente hat, oder die traditionelle Methode, createSpy() mit dem Methodennamen auszuführen, egal, wie viele Argumente die Methode hat?

Und auch wenn eine Direktive eine Template-URL hat, die auf eine HTML-Datei verweist ... Wird das auch geladen, wenn ich das Modul lade?

Falls eine Direktive eine HTML-Datei als Vorlagen-URL benötigt..Wie mockt man die Vorlagen-URL? Wenn mein Modul 100 Werksdienste hat ,, dann ist es zwingend notwendig, alle Dienstleistungen in beforeEach Block zu verspotten oder einfach nur um den Dienst zu verspotten, für die ist - von dem Versuch, einer HTML-Seite

+0

Kann meine Zweifel jemand klar bin in der Mitte – user2918673

Antwort

1

Q.1 zur Ausgabe zu verhindern, dass es Schreiben Sie den Unit Test Case für?

Ans. - Nein. Spotten Sie einfach die Dienste und spyOn die Methoden des Dienstes, auf die sich Ihr Controller verlässt.

Q. 2 - Wenn der Factory-Dienst, für den der Komponententest geschrieben wird, Abhängigkeiten zu anderen Diensten hat, sollten diese Dienste auch in beforeEach() verspottet werden, wobei alle abhängigen Dienstmethoden ausspioniert werden ??

Ans. - Ja. Diese Dienste sollten verspottet werden. Aber nur die Methoden jener Dienste, auf die sich Ihre Fabrik stützt, sollten ausgespäht werden. Es ist nicht notwendig, alle Methoden in diesem Dienst auszuspionieren.

Q.3 - Wenn die Factory-Service, die zu verspotten ist in einem Controller vorhanden ist, sollte der Controller zuerst verspottet werden und dann der Factory-Service ???

Ans. - Sie haben nicht genau verstanden, was Sie unter Factory Service in einem Controller. Bedeutet das, dass es in einem Controller als Abhängigkeit vorhanden ist? Oder bedeutet es, dass Sie eine .factory/.service Methode zu .controller Methode verkettet haben. In jedem Fall müssen Sie den Controller nicht verspotten, wenn Sie den Testfall für den Service schreiben.Aber wenn Sie Testfälle für den Controller schreiben, müssen Sie sich über den Service lustig machen und seine abhängigen Methoden ausspionieren.

Q.4 - Gibt es eine spezielle Methode zum Ausspionieren einer Methode mit Argumenten oder die traditionelle Methode mit createSpy() mit dem Methodennamen wird den Trick machen, egal wie viele Argumente die Methode hat ??

Ans. - Soweit ich weiß, hat die Anzahl der Argumente, die eine Methode hat, nichts mit ihrem Spion zu tun. Aber ja, wenn Sie callFake verwenden, müssen Sie die Methode mit der gleichen Anzahl von Parametern versehen, die die tatsächliche Methode akzeptiert.

Ich habe nicht viel Wissen über Schreibeinheit Testfälle für Richtlinien, vielleicht kann jemand anderes Ihnen dabei helfen.

Hoffe das beantwortet einige Ihrer Fragen.

+0

Dank viel Q4..To mehr specific..This war der, den ich erwähnt ... Ein Fabrik-Service in einem Controller angular.module stecken ('app'). controller ('Controller Name'). factory ('factory service name', function() ...... In diesem Fall Sollte ich den Controller verspotten oder kann ich direkt den Service verspotten .. – user2918673

+0

In diesem Fall Fall müssen Sie Testfälle separat für Controller und Fabrik schreiben –

+0

Da ich eckle.module ('app'). controller ....... Das bedeutet, ich erstelle einen Controller für ein vorhandenes Modul .... Aber der gleiche Modulname mit der gleichen Syntax wird an 15 Stellen verwendet ... in einigen Dateien hängt es von anderen benutzerdefinierten Modulen ab .... Wenn ich all diese js-Dateien in der Karma-Conf-Datei verweise und creat ea spec (Testfall dafür) .. und das Modul als Modul ('app') in beforeEach block .... verspotten. Sollte ich alle anderen Module verspotten, von denen das Modul 'app' abhängt oder einfach eine Zeile als angular.module einfügen ('app') in allen meinen Spezifikationen – user2918673