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)
这是一个很好的问题。我没有这个问题,因为我总是一开始就正确设置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