Rspec 2 - 标签内的类名

时间:2012-03-07 20:54:37

标签: ruby-on-rails ruby-on-rails-3.1 rspec rspec2

我有下一个HTML代码:

<ul class="nav">
    <li class="active">
      <a href="/users/page">Page</a>
    </li>
    ...
</ul>

我想确保我的li标签中包含“active”类并且在该文本中。

所以,我试过了:

response.should have_selector( "li", :class => "active" ,:content => "Page")

它不起作用,我得到这样的错误:

Failure/Error: response.should have_selector( "li", :class => "active" ,:content => "Page")
       expected following output to contain a <li class='active'>Page</li> tag:

我如何解决我的问题?

3 个答案:

答案 0 :(得分:9)

我认为您可以将该类添加到css选择器中。类似的东西:

response.body.should have_selector( "li.active", :content => 'Page')

答案 1 :(得分:3)

我解决了它:

response.body.should have_selector( "li.active") do
   have_selector('a', :content => 'Pages')
end

答案 2 :(得分:0)

我们在Watir测试中遇到了类似的问题:class matcher是一个精确的字符串匹配;根本不像CSS类选择器。

我们的解决方法是切换到xpath选择器,例如:

response.should have_selector("li", :xpath => 'contains(@class, "active")')

警告:我没有机会测试上面的代码;我只是展示了我们如何对@class属性使用'contains'来匹配部分类字符串。