使用mocha + chai“已经调用了回调”错误

时间:2016-06-26 08:58:41

标签: javascript node.js asynchronous mocha chai

在为节点应用程序编写一些基本的mocha测试时,我一直遇到这个奇怪的错误。看似随机的以下一组测试失败并抛出“已经调用Callback”错误。

describe('#timeChecks()', () => {
    it('should produce no results. times dont overlap. using minute form', (done) => {
        const rider1 = new Rider(1, 10, new Date('2011-12-01 00:00:00'), new Time(803), new Time(1320), [sj], cp);
        const driver1 = new Driver(1, 11, new Date('2011-12-01 00:00:00'), new Time(0), new Time(758), [], sf, cp, 1200, 20, 3);

        map_riders_to_drivers([rider1], [driver1], (err, res) => {
            if (err) throw err;

            expect(res).to.have.length(0);

            done();
        });
    });

    it('should produce 1 results. times overlap. using minute form', (done) => {
        const rider1 = new Rider(1, 10, new Date('2011-12-01 00:00:00'), new Time(703), new Time(920), [sj], cp);
        const driver1 = new Driver(1, 11, new Date('2011-12-01 00:00:00'), new Time(510), new Time(858), [], sf, cp, 2600, 20, 3);

        map_riders_to_drivers([rider1], [driver1], (err, res) => {
            if (err) throw err;

            expect(res).to.have.length(1);

            done();
        });
    });
});

运行以下两个测试偶尔会导致错误发生:

失败:http://i.imgur.com/e992wtX.png

成功:http://i.imgur.com/TdpAXrb.png

我已经尝试删除chai并只使用if语句。我假设正在发生竞争条件,导致bug出现随机。两种情况下的错误都为null,并且在记录值时res似乎返回预期值。有什么可能发生的?我有许多其他测试用例可以很好地协同工作,但是这里的第二个测试似乎会导致问题。任何帮助表示赞赏。

0 个答案:

没有答案