Javascript Mocha js在()之后调用是否太早?
对于Mocha单元测试,我有一些运行良好的Mocha示例,但我已经尝试了几个小时来运行这个示例,无论我做什么,after()的调用比我认为应该的要早得多。下面是一个例子: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();
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()之后仍然不能工作那么快