为所有的测试用例(Mocha)添加一个默认的before()函数



我正在使用TDD(Mocha)为我的node.js服务器编写函数。对于连接到数据库,我使用

before(function(done){
  db.connect(function(){
      done();
   });
});

我使用make test运行测试用例,并配置了我的makefile以运行使用mocha *.js的特定文件夹中的所有js文件

但是对于每个js文件,我将不得不单独连接到数据库,否则我的测试用例失败,因为它们不与其他测试文件共享公共范围。

所以问题是,是否有像beforeAll()这样的东西只是简单地连接一次数据库,然后运行所有的测试用例?

您可以将db连接设置为每个Mocha测试模块导入的模块。

var db = require('./db');
一个好的数据库接口会在它完成连接之前将你发送给它的命令排队。你可以在这里利用这一点。

在你的before调用中,简单地做一些相当于no op的事情。在SQL中,这将是一些简单的东西,如SELECT 1的原始查询。你不关心结果。查询的返回仅仅表示数据库准备好了。

由于每个Mocha模块使用相同的数据库模块,因此它只连接一次。

在每个测试模块中使用:

before(function(done) {
  db.no_op(done);
});

则定义db.no_op为执行no op并接受回调函数的函数

最新更新