2016-03-22 69 views
0

我試圖在運行我所有的測試之前給數據庫添加種子。所以我創建了一個新的文件bootstrapTest.js並已將其列入這樣gulp.src(['test/bootstrapTest.js', 'test/**/*.js']如何使用db-migrate刪除並重新運行遷移

bootstrapTest.js我測試的源文件,現在需要將數據庫和重新運行遷移和種子數據。所以我創建一個子進程並讓它運行一個shell腳本(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) { ... 
}` 

,這是我seed.sh看起來像

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

在控制檯上的輸出,我只看到了回聲輸出,而不是正在運行的命令。我已經驗證db-migrate確實沒有運行。

任何想法爲什麼db-migrate未運行?當我從我的zsh手動運行時,它工作正常。

回答

0

找出一個更好的方法來達到相同的結果。與其通過shell腳本運行這些腳本,我將它們添加到我的package.json腳本中,並在開始測試之前運行該腳本。所以我的package.json看起來像這樣 "scripts": { "testdb": "db-migrate reset --env test && db-migrate up --env test", "test": "npm run testdb && ./node_modules/.bin/gulp" }