如何在编写Qunit测试用例时从JS文件中调用Jquery blur事件

时间:2017-07-21 07:53:41

标签: javascript jquery qunit

我在JS文件中有自定义 search.JS 文件和内容,如下所示:

$(document).ready(function () {

    $("#number_c").blur(function(){
        toggle($("#number_c"),[$("#number_a"),$("#number_b")]);       
    });

    function toggle(input1, inputs) {

       if (input1.val() != '' ) {

         for (var i = 0; i < inputs.length; i++ ) {
            input = inputs[i];
            input.val('');
            input.prop("disabled",true);
        }
     } else {
       for (var i = 0; i < inputs.length; i++ ) {
           input = inputs[i];
           input.removeAttr("disabled");
       }
    }
  }

});

HTML 文件的条目如下:

    <label for="number_a">Number 1:</label>
    <input type="text" id="number_a"><br>
    <label for="number_b">Number 2:</label>
    <input type="text" id="number_b"><br>
    <label for="number_c">Number 3:</label>
    <input type="text" id="number_c"><br>

我需要编写Qunit测试用例来调用模糊方法。我试图在Qunit测试用例JS文件中触发模糊事件,但无法调用search.js模糊事件。请建议我如何写。谢谢提前。

我试图在search.js文件中的$(document).ready函数之外放置切换函数,并在Qunit测试下面编写。此测试按预期返回并且能够调用切换功能。

QUnit.test("Verify number_b disabled field", function(assert) { $('#number_c').val('201');  
toggle($("#number_c"),[$("#number_a"),$("#number_b")]); 
//$('#result').focus(); 
assert.equal($('#number_b').prop("disabled"), true, 'expected number_b fields needs to be disabled'); });

但是,我试图从search_test.js文件中调用search.js文件的模糊事件。我尝试在我的search_test.js文件中使用 $('#number_c')。触发器('模糊'); 触发但这不起作用。

1 个答案:

答案 0 :(得分:0)

您无法在源代码文件之外调用toggle()函数,因为您已将其包装在IIFE中(这是一件好事)。您可以测试源代码的唯一方法是从测试中trigger a blur event。试试这个:

QUnit.test("Verify number_b disabled field", function(assert) { 
  $('#number_c').val('201');  

  $('#number_c').trigger('blur');  // this line "fakes" a blue event

  assert.equal($('#number_b').prop("disabled"), true, 'expected number_b fields needs to be disabled'); });
});