【问题标题】:Mocha test are not running in right order using before/beforeEach摩卡测试没有使用 before/beforeEach 以正确的顺序运行
【发布时间】:2016-12-26 05:47:45
【问题描述】:

我使用以下代码并在复制文件之前使用断言,但是当我运行它时 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();
    });

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

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

        }).done();

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

在调试时,当我把 BP 停在之前,然后单击 step 将我带到 Handler.invoke 而不是之前...:(

知道这可能是什么原因吗?

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js


    【解决方案1】:

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

    编辑:假设您的问题中的 cmets 应该被格式化为代码,您的 Handler 是否在 it 块中?

    it('should do something', () => {
        Handler.invoke(req, res)
            .then((Ref) => {
    
            }).done();
    
        ee.on('Started', (arg) => {
            evtResStart = arg;
        });
    });
    

    【讨论】:

    • 谢谢 :) ,我试了一下,它不起作用:(还有其他想法吗?
    • 只是跳上这个:fs.statSync() 也应该解决这个问题,因为实际上不需要异步运行它。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多