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

dbl*_*ons 0 database testing rspec ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

为什么当我使用硒访问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
Run Code Online (Sandbox Code Playgroud)

Bil*_*han 5

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

这是解决方案

这次,第一个规范失败了,因为页面上缺少了“油漆围栏”内容。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
Run Code Online (Sandbox Code Playgroud)

我已经在我的一个项目中对其进行了检查,并且效果很好。

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

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