Fire函数onInput - Jasmine test

时间:2016-01-29 13:44:31

标签: javascript jasmine

我有以下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()并且可以确认,这不会被解雇。

这可以这样做吗?

1 个答案:

答案 0 :(得分:1)

如果使用jQuery更改值,则“onchange”事件不会触发,“oninput”也不会触发。

您需要在.trigger('input')之后.val(.... + 1)然后它应该按预期工作: - )