1

レール 4、rspec 3

ページネーションとフェイカーを使用しています

以下は、ページネーションとフェイカーを実装する前は問題なかった古いテスト ケースです。

RSpec.describe "users/index", :type => :view do
  before(:each) do
    assign(:users, [
      User.create!(
        :name => "Name",
        :email => "Name@mail.com",
        :password => "mystrings"
      ),
      User.create!(
        :name => "Name",
        :email => "Name2@mail.com",
        :password => "mystrings"
      )
    ])
  end

  it "renders a list of users" do
    render
    assert_select "tr>td", :text => "Name".to_s, :count => 2
    assert_select "tr>td", :text => "Name@mail.com".to_s, :count => 1
    assert_select "tr>td", :text => "Name2@mail.com".to_s, :count => 1
  end
end

エラーメッセージ:

 1) users/index renders a list of users
     Failure/Error: render
     ActionView::Template::Error:
       undefined method `total_pages' for #<Array:0x007f90b55d7828>
     # /Users/xuanliu/.rvm/gems/ruby-2.1.3/gems/will_paginate-3.0.7/lib/will_paginate/view_helpers.rb:73:in `will_paginate'

renderビューでテストするために、現在のページを「更新」する以外に方法はありますか?

私の他の問題も同様だと思います-render適切に使用することに関しても。

テストケース:

RSpec.describe "users/show", :type => :view do
  before(:each) do
    @user = assign(:user, User.create!(
      :name => "Name5",
      :email => "Name5@mail.com",
      :password => "mystrings"
    ))
  end

  it "renders attributes in <p>" do
    render
    expect(rendered).to match(/Name/)
    expect(rendered).to match(/Email/)
  end
end

エラーメッセージ:

2) users/show renders attributes in <p>
     Failure/Error: render
     ActionView::Template::Error:
       The @test variable appears to be empty. Did you forget to pass the collection object for will_paginate?
     # /Users/xuanliu/.rvm/gems/ruby-2.1.3/gems/will_paginate-3.0.7/lib/will_paginate/view_helpers/action_view.rb:94:in `infer_collection_from_controller'

お時間をいただきありがとうございます。

4

2 に答える 2

0

このコードを試してください:

before(:each) do
  @user = assign(:user, User.create!(
    :name => "Name5",
    :email => "Name5@mail.com",
    :password => "mystrings"
  ))
  assign :user, user
  assign :test, user
end
于 2015-12-29T04:07:29.783 に答える