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

event.preventDefault and jasmine.toHaveBeenTriggeredOn do not work together

我有一个带有点击侦听器的对象并尝试为其编写测试。我在使用 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 工作或禁用 [​​=17=] 进行测试?

jasmine-jquery 中有特殊的 Matcher 用于此 toHaveBeenPreventedOn()toHaveBeenPrevented()

来自documentation

var spyEvent = spyOnEvent('#some_element', 'click')
$('#some_element').click(function (event){event.preventDefault();})
$('#some_element').click()
expect('click').toHaveBeenPreventedOn('#some_element')
expect(spyEvent).toHaveBeenPrevented()