2012-12-10 43 views
3

在閱讀Michael Hartl編寫的Learn Rails書籍時,我很困惑其中一個練習。 Learn Rails by Example by Michael HartlRubyTutorial 10.5.2 Rspec測試微分分頁

「添加微柱分頁測試」

我的不正確的測試,放置在「描述‘爲已登錄用戶的’做」情況如下:

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都會通過。

任何「提示/幫助」,將不勝感激

回答

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 
+0

這幫助我找出分頁測試。 – Dreyfuzz

0

我想你應該把一個畢竟的過濾器做清理大量插入microposts;作爲你的實現的立場(除非你在測試代碼的另一部分沒有顯示),它不會刪除創建的微博。

這可以通過下面的代碼很容易做到:

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