Текущий PassthroughEmitter имеет 1 "фатальный недостаток": можно использовать только 1 параметр для события.
Данный пулл-реквест устраняет это ограничение.
P.S. текущие юнит тесты на PassthroughEmitter написаны неправильно, так как используется assert.equal вместо assert.deepEqual.
Например существующий тест:
it('should not break promise chain on event emitted by emitAndWait', () => {
runner.passthroughEvent(child, 'some-event');
runner.on('some-event', function() {
return 'some-data';
});
return child.emitAndWait('some-event')
.then((data) => {
assert.equal(data, 'some-data');
});
});
Здесь data, которая возвращается из промиса - это фактически двойной вложенный массив, который образуется путем двухкратного применения waitForResults из emitAndWait класса AsyncEmitter в gemini-core. Т.е. реальное значение data - это [['some-data']].
Корректно данная проверка выглядела бы следующим образом:
it('should not break promise chain on event emitted by emitAndWait', () => {
runner.passthroughEvent(child, 'some-event');
runner.on('some-event', function() {
return 'some-data';
});
return child.emitAndWait('some-event')
.then((data) => {
assert.equal(data[0][0], 'some-data');
});
});
То, что сейчас этот тест проходит - это особенность работы assert.equal
Текущий PassthroughEmitter имеет 1 "фатальный недостаток": можно использовать только 1 параметр для события.
Данный пулл-реквест устраняет это ограничение.
P.S. текущие юнит тесты на
PassthroughEmitter
написаны неправильно, так как используетсяassert.equal
вместоassert.deepEqual
.Например существующий тест:
Здесь data, которая возвращается из промиса - это фактически двойной вложенный массив, который образуется путем двухкратного применения
waitForResults
изemitAndWait
классаAsyncEmitter
в gemini-core. Т.е. реальное значениеdata
- это[['some-data']]
.Корректно данная проверка выглядела бы следующим образом:
То, что сейчас этот тест проходит - это особенность работы assert.equal