首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jQuery验证器在单元测试中不起作用

jQuery验证器在单元测试中不起作用
EN

Stack Overflow用户
提问于 2013-06-25 00:17:08
回答 3查看 913关注 0票数 2

我有一个很小的HTML文件:

代码语言:javascript
代码运行次数:0
运行
复制
<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>

这会用"false“警告我,这是预期的行为。

当我使用js-test-driver进行单元测试时,问题就来了:

代码语言:javascript
代码运行次数:0
运行
复制
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() {
    },

});

这段代码返回给我字符串

表单是否有效?真的

当然,这是我的项目的简化版本,但重点是我似乎无法对正在开发的验证模块进行单元测试,因为jQuery验证插件似乎无法工作。我遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2017-05-08 18:06:49

正如Enrique提到的,问题与jQuery的:hidden选择器有关。

修复:

代码语言:javascript
代码运行次数:0
运行
复制
$.validator.setDefaults({ ignore: "" });
var validator = $("#MyForm").validate();
alert($("#MyForm").valid());
票数 2
EN

Stack Overflow用户

发布于 2013-06-25 19:36:18

我找到了!显然,插件bz默认忽略了".hidden“输入。就像jQuery医生说的,

代码语言:javascript
代码运行次数:0
运行
复制
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
EN

Stack Overflow用户

发布于 2013-06-25 02:45:23

尝试使用.valid(),这是触发测试的正确方式,并获得一个表示表单有效性的布尔值。

代码语言:javascript
代码运行次数:0
运行
复制
<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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17280180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档