0

フィクスチャに基づいて 5 つの div を設定する単純な assert_select を使用して、レールで作成したテストを実行しています。しかし、5 が期待されていたときに、0 の要素が見つかったと言って失敗するたびに。テストがこれに基づいている出力を見ることは可能ですか?

以下は、私に問題を引き起こしている特定のテストです。

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 など) からすべてを手動で追加すると、すべてが正常に機能し、ソースを手動でチェックして、適切な数の項目があることを確認できることに注意してください。そのため、テストで何か間違ったことをしたと信じるようになります。

4

1 に答える 1

1

puts @response.body検査したい場合は、返されたページの本文を印刷するために使用できるはずです。カピバラの使用を検討することもできます。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 %>
于 2012-12-07T16:00:34.530 に答える