gemini-testing / gemini

💀💀💀[DEPRECATED] Use hermione
https://github.com/gemini-testing/hermione
MIT License
1.5k stars 149 forks source link

feat: Add ability to pass any event arguments amount via PassthroughEmitter #917

Open tormozz48 opened 6 years ago

tormozz48 commented 6 years ago

Текущий 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