在RSpec中检查选择器的多个副本

时间:2011-11-09 07:16:07

标签: ruby-on-rails ruby rspec tdd

我在RSpec中遇到了一个测试问题。有问题的测试应该通过检查页面上是否存在多个<article class="post">标记来测试索引页面上是否有多个帖子。我目前的实现如下:

it "should have more than one post" do
  get :index
  response.should have_selector("article", :class => "post", :count => 2)
end

由于某些原因,尽管在调试输出中显示了<article class="post">标记的多个实例,但此测试仍然失败。它给出的具体错误是

Failures:

1) PostsController GET 'index' should have more than one posts
   Failure/Error: response.should have_selector("article", :class => "post", :count => 2)
   expected following output to contain a <article class='post'/> tag:

请注意,如果我删除:count => 2选项,则测试会毫无意外地通过。

有谁知道为什么这个测试失败了?

1 个答案:

答案 0 :(得分:2)

我猜你在RSpec下使用Capybara还是Webrat?使用count选项,您的测试断言响应恰好包含2个帖子,而不是至少2个。最小选项是否符合您的要求?

请参阅https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/matchers.rbhttp://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers#has_selector%3F-instance_method