2017-07-21 1 views
0

Je mesure search.JS fichier et contenu dans le fichier JS comme ci-dessous:Comment appeler événement flou Jquery du fichier JS lors de l'écriture cas de test QUnit

$(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"); 
     } 
    } 
    } 

}); 

fichier HTML ont ci-dessous entrée:

<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> 

J'ai besoin d'écrire un cas de test Qunit pour appeler la méthode de flou. J'ai essayé de déclencher l'événement de flou dans le dossier JS de cas de test de Qunit mais pas capable d'appeler l'événement de flou de search.js. Veuillez me suggérer comment je peux écrire. Merci d'avance.

J'ai essayé de mettre la fonction bascule en dehors de la fonction $ (document) .ready dans le fichier search.js et écrite sous le test Qunit. Ce test revient comme prévu et peut appeler la fonction bascule.

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'); }); 

Mais, je suis en train d'appeler événement flou de fichier search.js de mon fichier search_test.js. J'ai essayé de déclencher en utilisant $ ('# number_c'). Trigger ('blur'); dans mon fichier search_test.js mais cela n'a pas fonctionné.

+0

Qu'avez-vous essayé dans le test jusqu'ici? Montrez-nous ce que vous avez écrit et nous pouvons essayer d'aider. – jakerella

+0

Salut @jakerella, j'ai ajouté dans ma section de questions. S'il vous plaît suggérer ce que je dois faire. –

Répondre

0

Vous ne pouvez pas appeler la fonction toggle() en dehors du fichier de code source car vous l'avez enveloppée dans un IIFE (ce qui est une bonne chose). La seule façon de tester le code source est de trigger a blur event depuis votre test. Essayez ceci:

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'); }); 
}); 
+0

Salut @jakerella, j'ai aussi utilisé exactement la même chose que ce que vous avez mentionné mais pas capable de déclencher l'événement de flou de search.js. J'ai également utilisé console.log pour voir le contrôle. –

+0

Il est possible que ce test exécute _before_ votre code search.js. Si c'est le cas, vous aurez probablement besoin d'une sorte de fonction "initialize" dans search.js que votre test lance pour lancer les choses – jakerella