3

Michael Hartl によって書かれた Learn Rails の本を読んでいるときに、演習の 1 つに行き詰まりました。 Rails を例から学ぶ Michael Hartl

「マイクロポストのページネーションのテストを追加する」

私の間違ったテストは、「「サインインしているユーザー向け」の説明」に配置されています。次のとおりです。

describe "pagination" do
    before(:all) do 
      30.times { FactoryGirl.create(:micropost, user: user) }
    end
    after(:all) { user.feed.delete_all }
    page.should have_selector('div.pagination') }

    it "should list each micropost" do
      user.feed.paginate(page: 1).each do |user|
        page.should have_selector('li', text: user.name)
      end
    end
  end 

page.shouldまたはpage.should_notを実行しても、テストは合格と表示されます。

「ヒント/ヘルプ」をいただければ幸いです

4

2 に答える 2

5

いくつかのリポジトリを閲覧しているときに、質問に対する答えを見つけました。追加のマイクロポストを作成した後、root_pathに再度アクセスする必要がありました。

describe "pagination" do
  it "should paginate the feed" do
    30.times { FactoryGirl.create(:micropost, user: user, content: "Consectetur adipiscing elit") }
    visit root_path
    page.should have_selector("div.pagination")
  end
end
于 2012-12-11T17:27:46.603 に答える
0

マイクロポストの大量挿入をクリーンアップするために、結局フィルターを配置する必要があると思います。実装の現状では (ここに示されていないテスト コードの別の部分で実行しない限り)、作成されたマイクロポストは削除されません。

これは、次のコードを使用して簡単に実行できます。

describe "pagination" do
  after(:all) { user.microposts.delete_all unless user.microposts.nil? }
  it "should paginate the feed" do
     40.times { FactoryGirl.create(:micropost, user: user) }
     visit root_path
     page.should have_selector('div.pagination')
  end
end
于 2013-09-29T09:43:09.247 に答える