从控制台查看rails test

时间:2012-12-07 15:46:16

标签: ruby-on-rails

我正在使用一个简单的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等)时,一切正常,我可以手动检查源并查看是否有适当数量的项目。所以它让我相信我在测试中做错了。

1 个答案:

答案 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 %>