玩笑测试返回的自定义事件发射器未定义

时间:2018-07-16 21:28:23

标签: node.js ecmascript-6 jestjs

我试图创建一个简单的事件发射器,并且当我尝试测试发射器时,它通过玩笑显示为未定义。

事件发射器的代码:

    class EventEmitter {
    constructor() {
        this.events = {};
    }
    on(e, fn) {
        if (this.events[e]) {
        return this.event[e].add(fn);
        }
        return this.events[e] = new Set([fn]);
    }
    once(e, fn) {
        if (this.events[e]) {
            this.event[e].add(fn, 1);
        }
        this.events[e] = new Set([fn, 1]);
    }
    emit(e, ...args) {
        if (this.events[e]) {
            this.events[e].forEach(fn => {
                if (typeof fn === 'function')
                    fn.apply(null, args);
            });

            if (this.events[e].has(1)) {
                delete this.events[e];
            }
        } else if (!this.events[e]) {
            console.log('Event Argument does not exist - please enter a valid event');
        }
    }
    off(e) {
        if (arguments.length === 0) {
            this.events = {};
        }
        if (this.events[e]) {
            delete this.events[e];
        } else if (!this.events[e]) {
            return console.log('Event Argument does not exist - please enter a valid event');
        }
    }
}

测试代码:

const EventEmitter = require('../index.js');

// Creating new Event Emitter

test('should Emit named events with a single argument', () => {
    const ee = new EventEmitter();
    ee.on('multiple', (x, y) => {
        console.log(`First Argument: ${x}, Second Argument: ${y}`);
    });
    ee.on('single', () => "Why isnt this working")
    const res = console.log(ee.emit('single'))
  expect(res).toBe('Why isnt this working')
})

const res返回未定义,但是我不确定为什么-任何帮助将不胜感激!

0 个答案:

没有答案