2013-06-24 50 views
1

不工作我有這個小HTML文件:jQuery的驗證單元測試

<html> 
    <head></head> 
    <body> 
     <form id='MyForm'> 
      <input type='text' required /> 
      <input type='submit' /> 
     </form> 

     <script src="/js/jquery-1.9.0.js"></script> 
     <script src="/js/jquery.validate.js"></script> 
     <script> 
      var validator = $("#MyForm").validate(); 
      alert(validator.form()); 
     </script> 
    </body> 
</html> 

這提醒我「假」,這是預期的行爲。

問題是當我去單元測試,用JS測試驅動程序:

TestCase("MyTests", { 

    setUp: function() { 
     this.myform = "<form id='MyForm'><input type='text' required /><input type='submit' /></form>"; 

     this.validator = $(this.myform).validate(); 
     jstestdriver.console.log("Does the form validate? " + this.validator.form()); 
    }, 

    test_empty: function() { 
    }, 

}); 

此代碼返回我的字符串

是否形式驗證? true

這是我的項目的簡化版本當然,但重點是我似乎無法單元測試驗證模塊即時通訊開發,因爲jQuery驗證插件似乎無法正常工作。我錯過了什麼?

回答

0

嘗試.valid()這是觸發測試並獲得代表形式的有效性的布爾值的正確方法。

<script> 
     var validator = $("#MyForm").validate(); 
     alert($("#MyForm").valid()); 
</script> 

//// 

this.validator = $(this.myform).validate(); 
jstestdriver.console.log("Does the form validate? " + $(this.myform).valid()); 
+0

'有效()'也給了我TRUE;在測試和'FALSE'手動 –

0

我發現了!顯然,插件bz默認忽略了「.hidden」輸入。在jQuery醫生說,

Elements can be considered hidden for several reasons: 

- They have a CSS display value of none. 
- They are form elements with type="hidden". 
- Their width and height are explicitly set to 0. 
- An ancestor element is hidden, so the element is not shown on the page. 

因爲單元測試是瀏覽器的少,輸入元素達到這個要求,因此其中由驗證插件忽視!

=)

1

如恩裏克提到的,問題是關係到jQuery的:hidden選擇器。

修復:

$.validator.setDefaults({ ignore: "" }); 
var validator = $("#MyForm").validate(); 
alert($("#MyForm").valid());