以下代码对我来说似乎不对,并且可能以更好的方式编写。
对于异步测试,mocha需要调用回调,即:done();
这是我在摩卡测试案例中的“之前”:
before(function (done) {
get_open_db("./test/test.db")
get_do_check_db(function() {
done()
})
})
在实际的代码段中,我向do_check_db添加了一个参数,即:cb(),以使完成的回调起作用。
function do_check_db(cb) {
check_database(function(db_dates) {
var most_recent_date = db_dates[0]["row.date_id"]
var least_recent_date = db_dates[db_dates.length - 1]["row.date_id"]
set_useful_dates(helpers.UsefulDates(most_recent_date, least_recent_date))
console.log(get_useful_dates())
if (most_recent_date != useful_dates.today_str ) {
console.log(("Datebase not recent! Data being used is from: " + most_recent_date).red)
} else {
console.log("Database running with latest data!".green)
most_recent_date = undefined
}
cb && cb()
})
}
这似乎运作良好,但是,无论如何都要阻止添加回调函数?我只为mocha添加了cb才能正常运行。
答案 0 :(得分:0)
您的get_do_check_db
函数 是异步的,因此只需要回调才有意义。摩卡(或其他任何东西)怎么知道功能完成了?如果您不关心它在之前在第一次测试运行之前完成,那么之后直接调用done(或者根本不提供done参数)。
before(function (done) {
get_open_db("./test/test.db")
get_do_check_db();
done();
})
但我怀疑你希望在第一次测试运行之前完成get_do_check_db
,在这种情况下你所拥有的是完全合适的。