Jasmine测试removeEventListener

时间:2017-04-19 07:23:43

标签: javascript testing jasmine

我正在尝试使用jasmine测试removeEventListener。我有

describe('test', function(){
    'use strict';

    beforeEach(function() {
        affix('#test');

        method = {
            test: function() {
                console.log('hi!');
            }
        }

        spyOn(method, 'test');

        $selectedElement = $('#test');
        selectedElement = $selectedElement[0];
    });

    it('should remove event listener', function(){

        selectedElement.addEventListener('click', method.test);
        selectedElement.removeEventListener('click', method.test);
        $selectedElement.click();

        expect(methods.showLove).not.toHaveBeenCalled();

    });
});

但这失败了。现在我想这是因为我在这里有匿名功能。有没有办法在不使用非匿名函数的情况下解决这个问题?

如果我把

function clickMe() {
    return 'bla';
}

并在事件侦听器中使用它代替method.test,测试成功。如何使用方法中定义的函数?

有没有办法在对象中添加或传递对该匿名函数的引用?

1 个答案:

答案 0 :(得分:0)

事实证明,jQuery触发事件无法正常工作,因此我使用了MDN上trigger events page上的那个。

这就是诀窍......