在为节点应用程序编写一些基本的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似乎返回预期值。有什么可能发生的?我有许多其他测试用例可以很好地协同工作,但是这里的第二个测试似乎会导致问题。任何帮助表示赞赏。