关于Codeacademy课程的Expect.js验证问题

时间:2013-05-08 16:27:04

标签: javascript jquery expect.js

我正在创建一个关于codeacademy的课程,使用户能够了解HTML表单的创建。这主要是为了我自己的娱乐,所以我们都在同一页面上。在阅读submission test guidelines and API之后,我决定使用expect.js来处理大部分验证,因为我需要遍历DOM。

因此,我创建的课程要求用户创建两个标签元素(标签标签内的内容)和两个输入字段({{1} }属性已定义且值设置为type)。同样,标准如下:

  1. text元素中创建两个<label>元素。务必说明用户填写的内容!
  2. 在每个<form>元素下创建两个<input>元素。请务必包含并定义<label>属性!
  3. 我们假设我有以下代码:

    type

    这将通过。根据我对expect.js运行方式和当前验证的理解,它应该传递,因为用户忽略了添加第二个<!DOCTYPE html> <html> <head> <title></title> </head> <body> <form> <label>Foo</label> <input type="text"> <label>Bar</label> <!-- should below here here --> <input> </form> </body> </html> 属性

    我的验证标准如下:

    type="text"

    如果用户提交HTML代码,那么它应该失败,但是它正在通过。我的断开连接是指用户输入// do the items exist? $expect('form > label').to.have.items(2, 'Did you forget to create two <label></label> tags?').and.to.have.text(/[a-zA-Z0-9]{1,}/i, 'Do the label tags have information inside of them? <label>My Label</label>'); $expect('form > input').to.have.items(2, 'Did you forget to create two <input> tags?').and.to.have.attr('type', 'text'); // do input fields exist below labels? $expect('label').to.have.siblings('input', "Are the input fields below the labels?"); <label>标记的第二组。如果他们在第二个<input>和/或<label>属性中省略了值为type的内容,则它仍然会通过。

    我在这里缺少一些特别或独特的东西吗?我已经尝试了上面提供的验证代码,无论是否使用方法链接都没有用。

    我尝试过什么

    1. 查看Codeacademy有关如何纠正此问题的任何提示
    2. 查看expect.js自述文件的任何提示
    3. 在StackOverflow上查找任何提示
    4. 删除方法链并重新建立方法链

1 个答案:

答案 0 :(得分:0)

我认为你需要that/which功能,这是非常有用的。

$expect('form > input').to.have.items(2, 'Did you forget to create two <input> tags?').that.has.attr('type', 'text');