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()
var spyEvent = spyOnEvent('#some_element', 'click')
$('#some_element').click(function (event){event.preventDefault();})
$('#some_element').click()
expect('click').toHaveBeenPreventedOn('#some_element')
expect(spyEvent).toHaveBeenPrevented()
我有一个带有点击侦听器的对象并尝试为其编写测试。我在使用 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()
var spyEvent = spyOnEvent('#some_element', 'click')
$('#some_element').click(function (event){event.preventDefault();})
$('#some_element').click()
expect('click').toHaveBeenPreventedOn('#some_element')
expect(spyEvent).toHaveBeenPrevented()