Mocha 测试 运行 使用 before/beforeEach 的顺序不正确

Mocha test are not running in right order using before/beforeEach

我使用以下代码,在我复制文件之前,之后的测试正在使用断言,但是当我 运行 它时 before/each 是考试后发生的事情,我在这里错过了什么?

我也尝试过使用 beforeach 但没有成功

describe(" Handler", function()  {

    before((done) => {

        fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
            if (!err) {
                console.log("success");
            } else {
                let lclpath = utils.pathSetup();
                Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
                console.log(err);
            }
        });
        done();
    });

//这个调用在前面的语句之前 为什么??????? //这应该发生在 before 完成之后,它们在同一个测试块中,这个被调用就在...

  Handler.invoke(req, res)
        .then((Ref) => {

        }).done();

    ee.on('Started', (arg) => {
        evtResStart = arg;
    });

在调试中,当我将 BP 置于 before 之前并单击 step into 将我带到 Handler.invoke 而不是在 before...:(

知道这样的事情可能是什么原因吗?

如果您在 tests/befores 中使用 done,则需要在回调中调用 done(),例如

before((done) => {
    fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
        if (!err) {
            console.log("success");
        } else {
            let lclpath = utils.pathSetup();
            Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
            console.log(err);
        }
        done();
    });
});

编辑:假设您问题中的评论应该被格式化为代码,那么您的 Handler 内容是否在 it 块中?

it('should do something', () => {
    Handler.invoke(req, res)
        .then((Ref) => {

        }).done();

    ee.on('Started', (arg) => {
        evtResStart = arg;
    });
});

您是否尝试过将 done(); 放入 fs.stat 的回调中? 这样你的测试应该运行如你所愿

before((done) => {

    fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
        if (!err) {
            console.log("success");
        } else {
            let lclpath = utils.pathSetup();
            Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
            console.log(err);
        }
        done();
    });
});