Mocha / Chai:如何对没有发生的事情进行异步测试?

时间:2016-08-02 11:17:51

标签: node.js asynchronous mocha chai eventemitter

我正在尝试为某些异步进程编写一个简短的mocha / chai节点测试,期望它忽略无关的输入。它基本上看起来像这样(与相关输入的测试相比)。问题是如何编写第二个测试?它是一个异步过程,最终什么都不做,没有错误/成功发出......

it('should process input', function(done) {
    object
    .on('success', function(result) {
       expect.result.to.equal("OK");
       done();
    })
    .asyncDoSomething('relevant input');
});

it('should ignore input', function(done) {
    object.asyncDoSomething('irrelevant input');
    // TODO: how do I verify the async process eventually did nothing?
});

2 个答案:

答案 0 :(得分:0)

这是一个很好的解决方案 - 想到的唯一解决方案是等待超时并假设如果在这段时间内没有发生,那么它就不会发生。但这不是好的设计,不必要地减慢了测试套件的速度。

您是否考虑过将决策逻辑隔离到可以同步测试的地方,然后对其进行测试?

答案 1 :(得分:0)

目前(还在等待可能更好的解决方案吗?),我已经更新了发射器,以便在它决定异步忽略输入的所有情况下发出某种“被忽略”的事件。为了测试,我使用以下方法检查忽略的“原因”:

expect(cause).to.equal(expectedCause)