2012-05-18 53 views
2

我使用mocha爲nodejs + mongodb Web應用程序編寫單元測試。有很多測試文件需要操作mongodb。如何在所有測試運行之前打開一個mongodb連接,並在所有測試運行後在mocha中關閉它?

所以我想在所有測試運行之前打開一個連接,並在所有測試後關閉它,但我不知道該怎麼做。

目前,我創建了一個文件dbtest_global.js,其中有這樣的代碼:

before(function(done) { 
    console.log('before all'); 
    global.connection = openMongoDB(); 
    done(); 
}); 

after(function(done) { 
    global.connection.close(done); 
}); 

然後在其他測試中,我使用require('./dbtest_global')需要它。

但是我運行時發現mochabefore方法會被多次調用,這會使得global.connection變更很多次。

我不知道有什麼辦法可以讓beforeafter方法在運行時只調用一次mocha

+0

也許自從你問這個問題後行爲已經發生了變化,但是如果這是'dbtest_global.js'的整體,''before''只應該只執行一次。基本上與解決方案在這裏回答相同:http://stackoverflow.com/a/16321613/227578,並從一個快速測試,似乎工作。 – dule

回答

0

您是否嘗試過使用普通的全局條件變量,該變量確保before函數立即返回,如果變量已被設置?

相關問題