event.preventDefault和jasmine.toHaveBeenTriggeredOn不能一起工作

时间:2017-03-01 18:29:42

标签: javascript events testing jasmine preventdefault

我有一个带有点击监听器的对象,并尝试为它编写测试。我在使用jasmine expect(event).toHaveBeenTriggered()时遇到问题,问题似乎是e.preventDefault语句。

监听器:

$(document).on("click", "input", function (e) {
    e.preventDefault();
    // do something
});

测试:

describe("SomeTest", function () {
    "use strict";

    beforeEach(function () {
        setFixtures("<input />");
    });

    it("should have been triggered", function () {
        var input = $('input');
        var spyEvent = spyOnEvent(input, 'click' );
        $( input ).click();
        expect( spyEvent ).toHaveBeenTriggered();
    });

});

有没有办法让toHaveBeenTriggered工作或禁用preventDefault进行测试?

1 个答案:

答案 0 :(得分:0)

Matcher toHaveBeenPreventedOn()toHaveBeenPrevented()

jasmine-jquery中有var spyEvent = spyOnEvent('#some_element', 'click') $('#some_element').click(function (event){event.preventDefault();}) $('#some_element').click() expect('click').toHaveBeenPreventedOn('#some_element') expect(spyEvent).toHaveBeenPrevented() 个特殊内容

来自documentation

ParallelIterator