您只需创建一个空数组来保存发出的值,每当发出一个新事件时,将其推到数组并检查其长度。当数组长度等于预期的事件数时,执行所需的所有检查。如果在多个测试中需要该功能,可以将其提取到单独的函数中。看看
collect
以下示例中的函数:
// waits for specified number of events and then resolves with the results
function collect(emitter, event, count) {
const results = [];
return new Promise((resolve, reject) => {
emitter.on(event, value => {
results.push(value);
if (results.length === count) {
return resolve(results);
}
})
})
}
describe('EventEmitter', function() {
it('emits 3 ping events', function() {
const emitter = new EventEmitter();
setTimeout(() => {
emitter.emit('ping', 'pong');
emitter.emit('ping', 'pong');
emitter.emit('ping', 'pong');
}, 10)
return collect(emitter, 'ping', 3).should.eventually.eql(['pong', 'pong', 'pong']);
})
})