【问题标题】:Running mocha test loop synchronously同步运行 mocha 测试循环
【发布时间】:2015-01-31 01:23:52
【问题描述】:

我正在这样的数组上运行 mocha 测试循环:

it('each should have permissions defined for each role', function(done) {
    async.forEach(_permissions, function(permission, callback) {
        log.debug(permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty);
        callback(permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty);
    },
    function(result) {
        log.debug(result);
        done();
    });
});

当我注销它时,它似乎在异步运行,即使我正在使用done() 回调。是这样吗?我的测试是否仍在成功执行,还是仅执行第一个然后返回成功结果?

这是控制台输出:

[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false }
    ✓ each should have permissions defined for each role // <- here's the test result
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false }
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false }
[Tue Dec 02 2014 09:24:07 GMT-0800 (PST)] DEBUG { obj: [ 'permissions!' ], params: { operator: 'to be empty' }, negate: false }

【问题讨论】:

    标签: node.js mocha.js async.js


    【解决方案1】:

    使用eachSeries,这也让我过去了。 forEach 是并行版本。

    这样使用:

    it('each should have permissions defined for each role', function(done) {
        async.eachSeries(_permissions, function(permission, callback) {
            permission.permissions.should.be.an.instanceOf(Array).and.not.be.empty;
            callback();
        },
        function(err) {
            done();
        });
    });
    

    【讨论】:

    • 真的是eachSeries吗?当我使用它时,现在只执行一个测试。
    • 啊,不得不稍微修改一下——断言必须不在回调中。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-12-23
    • 2017-10-21
    • 2015-09-16
    • 2020-08-26
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多