Wie man Module für Winkeltests vortäuscht

8

Nehmen wir an, ich habe ein Winkelmodul definiert als

%Vor%

wobei app ein Modul ist, das von der Masse anderer Module abhängt. Jetzt für Unit-Tests kann ich das Modul mit

verspotten %Vor%

aber ich muss Mock-Module für alle Abhängigkeitsmodule wie unten erstellen

%Vor%

Oder ich muss alle Skriptdateien laden, die diese Module enthalten.

Ich frage mich, was ist der beste Ansatz, um die Abhängigkeitsmodule hier zu verspotten? vor allem, wenn die Abhängigkeitsmodule zu viele sind.

    
Rizwan Sharif 12.02.2014, 17:46
quelle

3 Antworten

8

Schauen Sie in requireJs nach, um Ihre Abhängigkeiten zu laden. Mit RequireJs können Sie verschiedene Dateien für Ihren Produktionscode und Ihren Testcode laden.

Hier ist ein (grundlegendes) Beispiel.

Nehmen wir an, Sie haben eine JavaScript-Datei, in der Ihr angulares Modul definiert ist (z. B. app.js ):

%Vor%

Module dependency1Module, dependency2Module, ... haben ein ähnliches Setup:

%Vor%

Nun benötigen Sie eine Bootstrap-Datei (zB bootstrap.js , um den Speicherort der Dateien zu definieren). Sie haben also zwei Bootstrap-Dateien: eine Ihren Produktionscode (mit möglichen verkleinerten Versionen einiger Bibliotheken) und eine Version für Testzwecke:

%Vor%

Anstatt die baseUrl zu ändern, könnten Sie verschiedene Pfade für die Module definieren, die Sie vortäuschen möchten:

%Vor%

Der letzte Schritt besteht darin, die Bootstrap-Datei in Ihrem HTML-Code (Produktion oder Test) zu pluggen:

%Vor%

Dies ist eine Grundvoraussetzung. Bevor Sie einen bestimmten Winkel-Typ (zB Controller, Service, ...) verwenden können, müssen Sie natürlich auch ein requirejs-Modul dafür einrichten (und require it zB in Ihrem app.js ).

    
asgoth 25.02.2014 08:41
quelle
1

Die Modularisierung Ihrer eigenen App wird Ihnen helfen.

Wenn Ihre App so aussieht:

%Vor%

und enthält 50 Dinge wie Filter, Direktiven und Controller. Einige von ihnen hängen von Abhängigkeitsmodulen ab und einige von ihnen hängen von Abhängigkeitsmodulen ab.

Teilen Sie sie basierend auf ihren Verantwortlichkeiten und Abhängigkeiten auseinander.

%Vor%

Dann machen Sie Ihre App abhängig von Ihren eigenen Modulen:

%Vor%

Dein app sollte hauptsächlich Bootstrap Code haben.

Wenn Sie jetzt controller13 von mymodule2 testen möchten, müssen Sie nur mymodule2 's Abhängigkeiten vortäuschen, wenn dieses Modul Abhängigkeiten hat. Daher laden die Testsuiten app nicht, sie laden nur das Modul, das sie testen.

Siehe dieses Beispiel , wo die Tests für MyMainCtrl1 von mymodule1 nur für s1 von Bedeutung sind external1 , auch wenn app insgesamt von external1 , external2 und external3 abhängt.

    
Sylvain 28.02.2014 02:15
quelle
0

Es hängt alles davon ab, was Sie eigentlich testen möchten. Wenn Sie Unit-Tests durchführen, möchten Sie so wenig wie möglich laden / vortäuschen. Wenn Sie zum Beispiel einen Controller testen, verspottet man das Modul und lädt / spottet nur die Abhängigkeiten, die es verwendet.

    
Wawy 27.02.2014 16:08
quelle

Tags und Links