我正在使用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
并接受回调函数的函数