我有以下Jasmine测试试图触发一个函数onInput
,但它根本没有触发它。
问题
使用fixture,我可以像在标准html中那样使用并期望它在包含的脚本中找到一个函数吗?
这就是我正在尝试的:
// check an input cannot accept more than x characters
describe("when the page is loaded", function(){
var fixture;
beforeEach(function () {
fixture += "<input id='textInput' onInput='limitLength2(this,2)'>";
setFixtures(fixture);
});
it("an input should only allow x number of characters", function(){
$('#textInput').trigger("focus").val($('#textInput').val() + '1');
$('#textInput').trigger("focus").val($('#textInput').val() + '1');
$('#textInput').trigger("focus").val($('#textInput').val() + '1');
expect($('#textInput').val().length).toEqual(2);
});
afterEach(function () {
fixture = "";
fixture = null;
});
})
测试失败,如Expected 3 to equal 2.
我还向console.log()
添加了limitLength2()
并且可以确认,这不会被解雇。
这可以这样做吗?
答案 0 :(得分:1)
如果使用jQuery更改值,则“onchange”事件不会触发,“oninput”也不会触发。
您需要在.trigger('input')
之后.val(.... + 1)
然后它应该按预期工作: - )