测试缺少输入标记的value属性

时间:2010-06-17 16:45:51

标签: ruby-on-rails rspec

如何在Rails RSpec测试中确认缺少HTML属性?

我可以验证input标记是否具有value属性,并且它是一个空字符串,如下所示:

response.should have_tag("input[name=?][value=?]", "user[password]", "")
response.should have_tag("input[name=?][value=?]", "user[password_confirmation]", "")

但我要做的是验证我的输入字段根本没有value属性(即空白字段​​)。

3 个答案:

答案 0 :(得分:3)

想出来:

response.should_not have_tag("input[name=?][value]", "user[password]")
response.should_not have_tag("input[name=?][value]", "user[password_confirmation]")

只使用不带=的value属性?部分。因此,如果input标记具有value属性,则无论其包含什么,测试都将失败。

答案 1 :(得分:1)

各个网站上有很多帖子指出,have_tag会返回一个错误,即没有像has_tag这样的方法。

我的解决方法是使用have_selector:

    response.should have_selector("input#user_password", :content => "")

其中user_password是所需输入标记(密码字段)的id属性,我通过查看我的页面的源(在这种情况下是一个注册页面)找到了,并且井号描绘了我正在使用的输入标记的id字段。

我通过将内容值更改为“x”并且我的测试失败来验证这似乎有效。

使用 rspec-rails 2.5.0 rspec 2.5.0

答案 2 :(得分:0)

response.should_not have_tag("....")

怎么样?