【问题标题】:Mocha: Is there a scenario where a before hook would run after a test?Mocha:有没有在测试之后运行 before 钩子的场景?
【发布时间】:2017-02-06 03:00:39
【问题描述】:

我的前钩子在第一次测试之后运行,在第二次测试结束时

我的前钩子代码:

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

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

【问题讨论】:

    标签: javascript typescript promise mocha.js hook


    【解决方案1】:

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

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

    【讨论】:

    • @icda:是否记录了任何错误详细信息?您是否还有一个包含console.logcatch
    • 这是唯一显示在运行框中的内容;我仍然有一个只包含一个 console.log 的捕获
    • @icda:如果将整个内容替换为return Promise.resolve();,是否还会出现错误?
    • @icda:嗯,insightFacade.addDataset 不知何故行为不端。它可能是同步抛出的。试试try { return insightFacade.addDataSet(… } catch (error) { console.log("caught", error); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2017-10-10
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多