【发布时间】:2018-04-25 10:05:25
【问题描述】:
我用mocha 设置了一个简单的异步回调测试:
describe('test', function () {
it('should not work', function(done) {
client.on('success', function () {
return done('client saw success message but should have errored');
});
client.on('error', function (err) {
return done();
});
});
});
这个想法是客户端执行一些异步操作并且应该接收错误事件。如果它收到任何其他内容,则测试应该失败。
很遗憾,mocha 一直在抱怨:
done() called multiple times
我已经做了各种各样的事情来验证这不是真的。例如,我尝试在成功处理程序中的done 之前抛出错误,在控制到达成功处理程序时进行记录等。
如何在不告诉我我两次调用done 的情况下运行此测试?我会抛出一个错误,而不是使用错误消息调用 done,但这会导致测试失败并出现超时而不是我想要的错误。
【问题讨论】:
-
测试完成后,您需要从该测试中的
client中删除事件侦听器。您可能在以下测试中重用相同的client对象,这会导致先前测试的事件侦听器重新触发 -
令人困惑的是,这是我编写的唯一测试(当我添加它时,我没有看到任何日志显示“成功”被触发)。不过我会试一试。
-
我会为你写一个答案
标签: javascript mocha.js eventemitter