Mocha单元测试的新手,我有一些运行良好的Mocha示例,但是我已经尝试了几个小时来运行这个,无论我做什么,之后()被称为早于我感觉的方式这应该。这是一个例子:
var dummyData = require('./dummyData.js')
describe('mochaTest', function() {
after(function(done) {
dummyData.cleanDb(function(){
done();
})
});
it('should hit the db to get dummy data and send', function(done) {
dummyData.createDummyData(function(data1, data2, Lookup) {
Lookup.lookup({
data1: data1,
data2: data2
}, function(err, result) {
done();
});
});
});
})
然后在dummyData.js中:
exports.createDummyData = function(cb){
doSomeStuff(function (err, patient) {
// Connect to db, get some data to pass.
var Lookup = require(./Lookup.js);
cb(data1, data2, Lookup);
})
}
exports.cleanDb = function(cb) {
// Clear db connections.
cb();
}
问题是,在运行测试之后,调用after()函数并且Lookup函数无法命中db,因为数据库连接已被清除。为什么在这么早被调用之后,在it语句调用done()之前不应该调用它?