FactoryGirl创作不会出现在Selenium测试中

时间:2013-04-10 23:14:23

标签: ruby-on-rails database testing rspec factory-bot

我有一个简单的测试用例,如下所示:

describe 'Quiz packs page' do
  before :each do
    FactoryGirl.create(:quiz_pack, :first_in_first_pack).should be_valid
  end
end

it "should have an index page", :js => true do
  visit quiz_packs_path
end

为什么当我使用selenium访问quiz_packs_path时,FactoryGirl中的特征是否不会显示为索引页面上的条目?

老实说,我已经阅读了很多关于FactoryGirl的内容,我的大脑很疼,但我仍然不太明白创作是如何发生的。

这是我的测验包,如果有帮助的话。请注意我使用的是FactoryGirl特性,因为我有很多这样的东西。如果这是一个问题,请告诉我。

FactoryGirl.define do
  factory :quiz_pack do
    trait :first_in_first_pack do |f|
      f.pack 1
      f.number 1
      f.image "first_image
    end
  end
end

1 个答案:

答案 0 :(得分:4)

这是一个很好的问题。我没有这个问题,因为我总是在开始时正确设置rspec。但这个问题仍值得解决。

这是解决方案

  

这次第一个规范失败,因为页面中缺少内容“paint fence”。创建的数据库记录不适用于Selenium测试,这是因为我们的规范使用的是与Selenium不兼容的数据库事务。要解决此问题,我们可以将spec_helper文件中的config.use_transactional_fixtures设置为false。   http://asciicasts.com/episodes/257-request-specs-and-capybara

所以,只需在spec_helper.rb中设置它就可以了。

config.use_transactional_fixtures = false

我已经在我的一个项目上检查了它并且效果很好。

此外,数据库清理程序在任何情况下都是首选。

以下是详细的讨论,如果您有兴趣阅读,但不是必要的: https://groups.google.com/forum/#!msg/ruby-capybara/JI6JrirL9gM/R6YiXj4gi_UJ