如何在所有测试运行之前打开mongodb连接,并在所有测试运行后在mocha中关闭它?

时间:2012-05-18 16:53:33

标签: unit-testing mongodb mocha

我正在使用mocha为nodejs + mongodb Web应用程序编写单元测试。有许多测试文件需要操作mongodb。

所以我想在所有测试运行之前打开一个连接,并在所有测试之后关闭它,但我不知道该怎么做。

目前,我创建了一个文件dbtest_global.js,其中包含以下代码:

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

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

然后在其他测试中,我使用require('./dbtest_global')来要求它。

但我发现在运行mocha时,before方法将被多次调用,这会使global.connection多次更改。

我想知道有没有办法让beforeafter方法在运行mocha时只调用一次?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用普通的全局条件变量,以确保如果已经设置了变量,则函数会立即返回?

答案 1 :(得分:0)

尝试使用mochaodb帮助mocha - https://github.com/arunoda/mocha-mongo

它为您创建数据库连接并在测试之前清理集合。