Jasmine-Node und express.js automatisieren

8

Ich habe eine einfache Webanwendung mit express.js erstellt und möchte sie mit Jasmine-Knoten . Funktioniert soweit, aber mein Problem ist, dass ich den Server jedes Mal manuell starten muss, bevor ich meine Tests ausführen kann.

Könnten Sie mir helfen, wie ich einen Spec-Helper schreibe, der den Server (mit einem anderen Port als meinem Entwicklungsserver) nur für die Tests ausführt und ihn anschließend wieder abbricht?

    
optikfluffel 01.11.2012, 11:38
quelle

4 Antworten

16

Das mache ich:

Ich habe eine server.js -Datei im Stamm meines Knotenprojekts, die den Knotenanwendungsserver (mit Express) einrichtet und zwei Methoden exportiert:

%Vor%

Die Datei app.js ist an dieser Stelle einfach:

%Vor%

Also wäre die grundlegende Struktur der Dateien / Ordner wie folgt:

%Vor%

Wenn Sie diese Trennung verwenden, können Sie mit den Server normal ausführen :

%Vor%

.. und / oder erfordern es von einem benutzerdefinierten Knotenscript , das ein Knotenscript (oder eine jake / grunt / whatever-Task) sein könnte, die Ihre Tests wie folgt ausführt:

%Vor%     
BFil 14.11.2012, 12:17
quelle
0

Ich benutze Mocha - was verdammt ähnlich ist - aber das gleiche Prinzip sollte auch gelten: Du könntest require in deiner app.js -Datei in einem 'beforeEach'-Hook innerhalb des Hauptteils describe ausprobieren. Das sollte es für dich anheizen.

    
floatingLomas 01.11.2012 16:50
quelle
0

Angenommen, Sie verwenden einen Code, der app.listen() in server.js aufruft, benötigen Sie die Datei nicht bei jedem Durchlauf, sondern nur einmal und haben dann zwei Funktionen wie

%Vor%

Dann können Sie diese in beforeEach und afterEach

verwenden     
ma_il 10.11.2012 23:15
quelle
-1

Wenn Sie dann einen Schritt weiter gehen wollen, um Ihre Tests während der Entwicklung zu automatisieren, können Sie zu Ihrer Terminalzeile gehen und

ausführen %Vor%

Jasmine wird dann jede Datei in Ihrem Projekt hören und wann immer Sie Änderungen vornehmen, wird es zeigen, ob dieser Teil Ihres Codes einen Ihrer Tests durchbricht;)

    
user3611442 12.10.2014 10:29
quelle