我在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
选项,则测试会毫无意外地通过。
有谁知道为什么这个测试失败了?
答案 0 :(得分:2)
我猜你在RSpec下使用Capybara还是Webrat?使用count选项,您的测试断言响应恰好包含2个帖子,而不是至少2个。最小选项是否符合您的要求?
请参阅https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/matchers.rb和http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers#has_selector%3F-instance_method