2011-06-22 6 views
1

Actuellement, j'utilise jQuery 1.6.1 et jsTestDriver framework pour tester l'extrait de code suivant. Le but principal est de tester si l'élément d'entrée "#area" a obtenu le focus après que "#switcher" soit déclenché avec un événement focus. Il n'a pas passé le test, mais je ne vois pas pourquoi il devrait échouer. Une chose étrange est que si je mets un point d'arrêt en utilisant firebug dans firefox dans cette fonction de test, le test passera avec succès après que j'appuie sur le bouton run plus tard.comment tester focus dans un événement focus en utilisant jsTestDriver

Est-ce que quelqu'un a rencontré le même problème? ou est-ce un bug du framework jsTestDriver?

Mon appareil est la suivante:

<form id="test-form"> 
      <input style="display: none;" type="text" value="" name="area" id="area"> 
      <input type="text" value="" name="switcher" id="switcher"> 
</form> 

Voici mon code de test javascript

TestCase('test focus within a focus event', { 
    setUp: function() { 
     this.$form = $('#test-form'); 
    }, 

    'test focus switcher, area should be focused': function() { 
     function focusHandler(){ 
      $('#area', this.$form).show(); 
      $('#area', this.$form).focus(); 
     } 
     $('#switcher', this.$form).live('focus', focusHandler); 
     $('#switcher', this.$form).focus(); 

     assertTrue($('#area', this.$form).is('focus')); 
    }, 

}); 

Répondre

0

Autre que le fait que le sélecteur est censé être ': focus' au lieu de 'focus' , Je n'ai pas d'autres suggestions solides. Vous ne devriez pas retrouver des choses si souvent. Essayez:

TestCase('test focus within a focus event', { 
    setUp: function() { 
    this.$form = $('#test-form'); 
    }, 

    'test focus switcher, area should be focused': function() { 
    function focusHandler() { 
     $('#area', this.$form).show().focus(); 
    } 

    var $switcher = $('#switcher', this.$form); 
    $switcher.live('focus', focusHandler); 

    $switcher.focus(); 

    assertTrue($('#area', this.$form).is(':focus')); 
    } 
Questions connexes