我正在创建一个关于codeacademy的课程,使用户能够了解HTML表单的创建。这主要是为了我自己的娱乐,所以我们都在同一页面上。在阅读submission test guidelines and API之后,我决定使用expect.js
来处理大部分验证,因为我需要遍历DOM。
因此,我创建的课程要求用户创建两个标签元素(标签标签内的内容)和两个输入字段({{1} }属性已定义且值设置为type
)。同样,标准如下:
text
元素中创建两个<label>
元素。务必说明用户填写的内容!<form>
元素下创建两个<input>
元素。请务必包含并定义<label>
属性!我们假设我有以下代码:
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
的内容,则它仍然会通过。
我在这里缺少一些特别或独特的东西吗?我已经尝试了上面提供的验证代码,无论是否使用方法链接都没有用。
答案 0 :(得分:0)
我认为你需要that/which
功能,这是非常有用的。
$expect('form > input').to.have.items(2, 'Did you forget to create two <input> tags?').that.has.attr('type', 'text');