Javascript Mocha js在()之后调用是否太早?

Javascript Mocha js在()之后调用是否太早?,javascript,node.js,unit-testing,mocha.js,Javascript,Node.js,Unit Testing,Mocha.js,对于Mocha单元测试,我有一些运行良好的Mocha示例,但我已经尝试了几个小时来运行这个示例,无论我做什么,after()的调用比我认为应该的要早得多。下面是一个例子: var dummyData = require('./dummyData.js') describe('mochaTest', function() { after(function(done) { dummyData.cleanDb(function(){ done();

对于Mocha单元测试,我有一些运行良好的Mocha示例,但我已经尝试了几个小时来运行这个示例,无论我做什么,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();
}

问题是,在测试运行之后,after()函数被调用,而Lookup函数无法访问数据库,因为数据库连接已被清除。为什么在这么早被调用之后,在it语句调用done()之前不应该调用它呢?

它不应该是
require(“./Lookup.js”)
,也可以放一个
console.log(err,result)在您调用测试用例中的
done()
并告诉您得到了什么之前?如果您在
钩子之后删除
,那么测试是否有效?如果在测试有效后删除,则是的,但当然,在完成所有操作之后必须调用after中的内容。我知道这已经超过一年了,但现在我正在经历这种情况。我有一个在Firebase数据库中增加一个值的测试,然后我的after()将其重置回0。当我运行测试时,我打开了Firebase,我看到0跳转到1,然后快速跳回0。删除After函数会使测试通过,但我需要重置以继续运行测试。我想我可以在before()上重置,但是before()之后仍然不能工作那么快