So erhalten Sie grunt.js, um eine Express-App zum Testen zu starten

8

Meine derzeitige Situation ist, dass ich grunt verwende, um eine Produktionsversion meiner Express-App zu erstellen (alle js / css minimieren und zusammenführen, alle Dateien an Ort und Stelle kopieren) und dann ein Skript ausführen, das eine Umgebungsvariable setzt (Meine App bedient nur die Testumgebung im TEST-Modus), erstellt eine leere Mongo-Testdatenbank und ruft dann npm start im Anwendungsverzeichnis auf, und dann muss ich manuell die Tests entweder von Chrome oder Phantom ausführen, was ich will Do ist Grunt haben, setzen Sie die Umgebungsvariable und führen Sie den Server, führen Sie die Tests und dann den Server zu stoppen (in der Zukunft, wenn alles erfolgreich ist, wäre es schön, es auch bereitstellen). Wenn ich jedoch versuche, die App grunzen zu lassen, wird sie gestoppt, sobald sie fertig ist.

Wie grunze ich, starte die App, warte bis sie gestartet ist und starte dann Tests?

    
Kris Erickson 07.04.2013, 00:35
quelle

2 Antworten

11

Wenn Sie grunt-express überprüfen, ist dies ein Plugin für Express-Webserver-Aufgaben über grunt.

  

express-keepalive

     

Beachten Sie, dass dieser Server nur so lange ausgeführt wird, wie Grunt ausgeführt wird. Einmal   Die Aufgaben von grunt sind abgeschlossen, der Webserver stoppt. Dieses Verhalten kann   geändert werden, indem Sie eine Express-Keepalive-Aufgabe am Ende Ihrer hinzufügen   Aufgabenliste wie folgt

     

grunt.registerTask('myServer', ['express', 'express-keepalive']);
  Wenn Sie nun myServer starten, wird Ihr Express-Server am Leben erhalten   bis Sie es manuell beenden.

     

Diese Funktion kann auch ad-hoc aktiviert werden, indem Sie die Aufgabe wie grunt express express-keepalive ausführen.

     

Dieses Design gibt Ihnen die Flexibilität, grunt-express zu verwenden   Verbindung mit einer anderen Aufgabe, die unmittelbar danach ausgeführt wird, wie   die grunt-contrib-qunit plugin qunit Aufgabe. Wenn wir eine ausdrückliche Aufgabe erzwingen   immer asynchron sein, so kann ein solcher Anwendungsfall nicht mehr passieren.

Aus dem Guide grunt-contrib-qunit package wird Qnit Unit Tests in einer kopflosen PhantomJS-Instanz ausgeführt. Bedenken Sie auch die letzte Zeile, wenn Sie Express zwingen, immer asynchron zu sein, würde es nichts nützen.

npm Link für grunt-express .

    
user568109 09.04.2013, 19:21
quelle
1

Ich bin mir nicht sicher, ob ich dein Problem richtig verstehe, aber wahrscheinlich hilft das:

Weißt du etwas über die Async-Funktion von Grunt? Für einige Zeit habe ich den folgenden Ansatz verwendet, um meine Express-App zu starten (und zu stoppen). Ich habe es mit Watch verwendet, sodass es beim Speichern automatisch neu gestartet wird. In diesem Fall müssen Sie die Option nospawn von watch auf true setzen.

%Vor%

Es ist hässlich wegen diesem Cache-Hack. Es funktioniert jedoch.

    
Sebastian vom Meer 10.04.2013 20:23
quelle

Tags und Links