RubyTutorial 10.5.2 Rspec测试微博分页

时间:2012-12-10 22:04:10

标签: ruby-on-rails-3 rspec-rails railstutorial.org

在阅读Michael Hartl撰写的Learn Rails一书时,我对其中一个练习感到困惑。 Learn Rails by Example by Michael Hartl

“添加微博分页测试”

我的错误测试,在“描述”中为登录用户“do”放置如下:

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。

,测试显示为已通过

任何'提示/帮助'将不胜感激

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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