嗨,我是JavaScript的新手。我正在用javascript实现函数上的发射器,并且在使用茉莉花框架测试它时遇到了麻烦。下面是打开的功能发射器和用于测试功能的代码。

//main.js

Emitter.prototype.on = function (event, listener)
{
    if (typeof this.events[event] !== 'object')
    {
        this.events[event] = [];
     }

     this.events[event].push(listener);
 };


//test.js

describe('#on', () =>
{
    it('should subscribe to an event name and be called when
    triggered', () =>
{

    Emitter.on(EVENT_NAME_ONE, spyFunction);
    //Emitter.trigger(EVENT_NAME_ONE);

    expect(spyFunction.calls.count()).toBe(1);
 });


上述测试失败。我不知道为什么。有人可以帮我吗谢谢。

最佳答案

错误显示Emitter.on未定义。请参见this thread

on是在Emitter实例上定义的。

class Emitter {
    constructor() {
        console.log('created Emitter!')
    }
    on(event, callback) {
        console.log('on')
    }
}

a = new Emitter()
=> created Emitter!
a.on()
=> on

10-08 04:18