我正在使用一个简单的assert_select运行我在rails中创建的测试,该测试应根据我的灯具填充5个div。但每次失败时都会说0个元素被发现,预计会有5个元素。是否有可能看到测试基于此的输出?
以下是给我带来麻烦的具体测试:
require 'test_helper'
class PostsControllerTest < ActionController::TestCase
test "should get index" do
get :index
assert_response :success
assert_select '.contentBox', minimum: 5
end
end
和错误:
Finished tests in 0.403847s, 2.4762 tests/s, 4.9524 assertions/s. 1) Failure: test_should_get_index(PostsControllerTest) [/var/www/site/test/functional/posts_controller_test.rb:7]: Expected at least 5 elements matching ".contentBox", found 0. 1 tests, 2 assertions, 1 failures, 0 errors, 0 skips rake aborted!
应该注意的是,当从rails控制台手动添加所有内容(例如Post.new等)时,一切正常,我可以手动检查源并查看是否有适当数量的项目。所以它让我相信我在测试中做错了。
答案 0 :(得分:1)
如果要检查,您应该能够使用puts @response.body
打印返回的页面正文。您也可以考虑使用Capybara,如果您这样做,可以使用put page.body
您必须添加到测试中的是创建5个帖子。所以做一些事情:
class PostsControllerTest < ActionController::TestCase
test "should get index" do
get :index
puts @response.body #This should print what is returned from get:index
assert_response :success
assert_select '.contentBox', minimum: 5
end
end
评论中的问题更新:
如果你有你的控制器:
@posts = Post.all
然后在你看来你应该有类似的东西:
<% @post.all do |post| %>
<div class="contentBox">
Title: <%= post.title %>
</div>
<% end %>