摩卡js在()之后调用太快?

对于摩卡unit testing来说,我有一些摩卡的例子运行良好,但是我一直在努力几个小时才能运行这个程序,不pipe我做什么,after()被调用的方式早于我的感觉。 这是一个例子:

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(); } 

问题是在testing运行后,after()函数被调用,Lookup函数无法访问数据库,因为db连接已经被清除了。 为什么在被调用这么早之前,它不应该被调用,直到it语句调用done()是正确的?