2016-03-22 10 views
0

Ich versuche, die db zu seed, bevor ich alle meine Tests ausführen. So habe ich eine neue Datei bootstrapTest.js erstellt und enthalten es in meinem Test-Quelldatei wie diese gulp.src(['test/bootstrapTest.js', 'test/**/*.js']Wie Sie Migrationen mit db-migrate ablegen und erneut ausführen

bootstrapTest.js jetzt muss die Datenbank zurückstellt und die Migration erneut ausführen und die Daten Saatgut. Also erstelle ich einen untergeordneten Prozess und lasse ihn ein Shell-Skript ausführen (seed.sh).

`const exec = require('child_process').exec; 
exec('./seed.sh', 
    {env: {database__host: 'localhost', database__user: 'username', 
    database__port: 3306, database__password: 'password'}}, function 
    (error, stdout, stderr) { ... 
}` 

und das ist, wie meine seed.sh wie

#!/bin/bash ./node_modules/.bin/db-migrate reset --env test echo '## Database truncated' ./node_modules/.bin/db-migrate up --env test echo '## Database migrated'

In der Ausgabe auf der Konsole aussieht, ich nur das Echo Ausgabe sehen und nicht die Befehle, die ausgeführt werden. Ich habe validiert, dass db-migrate nicht läuft.

Irgendwelche Idee, warum db-migrate nicht läuft? Wenn ich das manuell von meinem Zsh aus führe, funktioniert es gut.

Antwort

0

Eine bessere Möglichkeit gefunden, das gleiche Ergebnis zu erzielen. Anstatt diese über das Shell-Skript auszuführen, habe ich sie in mein Skript package.json eingefügt und dieses Skript vor dem Start des Tests ausgeführt. So sieht mein Paket.json so aus "scripts": { "testdb": "db-migrate reset --env test && db-migrate up --env test", "test": "npm run testdb && ./node_modules/.bin/gulp" }