使用before / beforeEach之前,Mocha测试没有以正确的顺序运行

时间:2016-08-19 06:47:45

标签: javascript node.js unit-testing mocha

我使用下面的代码,在之前的复制文件中,之后的测试使用了断言,但是当我运行它时,之前/每个在测试之后发生,我在这里缺少什么?

我也尝试过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放在之前停止并单击步骤将我带到Handler.invoke而不是之前... :(

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

2 个答案:

答案 0 :(得分:0)

如果您在测试/之前使用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;
    });
});

答案 1 :(得分:0)

您是否尝试将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();
    });
});