我如何使用事件发射器接收多个相同类型的事件?
How can i receive more than one event of same type using Event Emitter?
我正在使用 mocha 编写测试用例 framework.I 必须编写测试用例,其中我想接收多个相同类型的事件并根据预期检查所有事件值 value.I 我正在使用 EventEmitter发出事件,但我不知道如何一次累积多个事件,然后在一个上下文中检查所有值。
如何使用 eventEmitter 或任何其他方式 aggregated/accumulated 事件?
您可以只创建一个空数组来保存发出的值,每当发出新事件时,将其推送到数组并检查其长度。当数组长度等于您期望的事件数时,执行您需要的所有检查。如果您在多个测试中需要该功能,可以将其提取到一个单独的函数中。查看以下示例中的 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']);
})
})
我正在使用 mocha 编写测试用例 framework.I 必须编写测试用例,其中我想接收多个相同类型的事件并根据预期检查所有事件值 value.I 我正在使用 EventEmitter发出事件,但我不知道如何一次累积多个事件,然后在一个上下文中检查所有值。
如何使用 eventEmitter 或任何其他方式 aggregated/accumulated 事件?
您可以只创建一个空数组来保存发出的值,每当发出新事件时,将其推送到数组并检查其长度。当数组长度等于您期望的事件数时,执行您需要的所有检查。如果您在多个测试中需要该功能,可以将其提取到一个单独的函数中。查看以下示例中的 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']);
})
})