我正在创建一个关于 codeacademy 的课程,使用户能够了解 HTML 表单的创建。这主要是为了我自己的娱乐,所以我们都在同一页上。在阅读了提交测试指南和 API之后,我决定使用它expect.js
来处理我的大部分验证,因为我需要遍历 DOM。
因此,我正在创建的课程要求用户创建两个标签元素(标签标签内包含内容)和两个输入字段(type
定义了属性并将值设置为text
)。同样,标准如下:
<label>
在元素内部创建两个元素<form>
。请务必指明用户将填写的内容!<input>
在每个元素下方创建两个<label>
元素。一定要包含并定义type
属性!
假设我有以下代码:
<!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>
这会过去的。根据我对 expect.js 操作方式和当前验证的理解,它不应该通过,因为用户忽略了添加第二个type="text"
属性
我的验证标准如下:
// 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?");
如果用户提交 HTML 代码,那么它应该会失败,但它正在通过。我的断开连接是当用户输入第二组和<label>
标签<input>
时。如果他们在第二个中省略内容<label>
和/或type
具有它的值的属性text
仍然会通过。
我在这里缺少什么特别或独特的东西吗?我已经尝试了上面提供的验证代码,无论是否使用 out 方法链接都无济于事。
我试过的
- 在 Codeacademy 上查看有关如何纠正此问题的任何提示
- 查看 expect.js README 以获取任何提示
- 在 StackOverflow 上寻找任何提示
- 删除了方法链并重新建立了方法链