给定以下简单规范:

require 'spec_helper'

feature 'Feeds', %q{
  In order see the latest content of Buurtlink
  As a user
  I should be able to view a neighborhood or postal_code
} do

  background do
    @neighborhood = FactoryGirl.create(:neighborhood_with_posts)
  end

  scenario 'Visitor views a neighborhood' do
    visit neighborhood_path(@neighborhood)

    find('#header_title').should have_content 'Diemen-Zuid'

    10.times do |index|
      expect(page).to have_text "Title of new post #{index}"
    end
  end

end

这个测试随机失败。页面上没有使用js,但在factorygirl创建完所有必需的帖子之前,capybara似乎访问了邻居路径。当使用save_和_open_页面查看页面时,我可以看到,有时还没有创建所有的帖子。
只需在访问邻里路径上添加sleep 1就可以解决问题,但这不是一个解决方案。
我用的是RSpec,水豚,Spork和数据库清洁剂我还对ActiveRecord进行了monkey补丁,以便它使用共享连接。

最佳答案

请尝试此操作,而不要使用背景块:

let!(:neighborhood){FactoryGirl.create(:neighborhood_with_posts)}

你能做到的
 visit neighborhood_path(neighborhood)

关于ruby-on-rails - capybara 不等待factory_girl完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18255354/

10-08 23:09