Javascript Mocha:是否存在这样一种场景:测试之后会运行一个before钩子?

Javascript Mocha:是否存在这样一种场景:测试之后会运行一个before钩子?,javascript,typescript,promise,mocha.js,hook,Javascript,Typescript,Promise,Mocha.js,Hook,在第一次测试之后,在第二次测试结束时,我的before hook正在运行 我的前钩子的代码: before(function () { insightFacade.addDataset("courses", content) .then(function (result: InsightResponse) { console.log("then"); }) .catch(function (err: InsightR

在第一次测试之后,在第二次测试结束时,我的before hook正在运行

我的前钩子的代码:

before(function () {
    insightFacade.addDataset("courses", content)
        .then(function (result: InsightResponse) {
            console.log("then");
        })
        .catch(function (err: InsightResponse) {
            console.log("catch");
        });
});

还需要注意的是,有时前2项测试而不是前1项测试会失败,这取决于我如何安排测试,但第二项测试总是失败

您没有返回承诺,所以摩卡不知道等待它。
before
钩子将任务排队以异步运行,同时开始第一个测试

before(function () {
    return insightFacade.addDataset("courses", content)
        .then(function (result: InsightResponse) {
            console.log("then");
        })
        .catch(function (err: InsightResponse) {
            console.log("catch");
        });
});
before(函数(){
return insightFacade.addDataset(“课程”,内容)
.然后(功能(结果:InsightResponse){
console.log(“then”);
})
.catch(函数(错误:InsightResponse){
控制台日志(“捕获”);
});

});返回后,我在运行窗口(Webstorm)中每隔一秒都会得到“之前所有”hook has failedone@icda:是否记录了任何错误详细信息?您是否仍然有一个
catch
仅包含
console.log
?这是运行框中唯一显示的内容;我仍然有一个只包含控制台的捕获。log@icda:如果你用一个
return Promise.resolve()替换整件事
,错误是否仍然出现?@icda:嗯,
insightFacade.addDataset
在某种程度上出现了错误。它可能是同步投掷的。Try
Try{return insightFacade.addDataSet(…}catch(error){console.log(“catch”,error);}