ruby-on-rails - factory_girl + rspec 似乎不会在每个示例后回滚更改

标签 ruby-on-rails ruby rspec fixtures factory-bot

类似于此处描述的问题: http://rpheath.com/posts/411-how-to-use-factory-girl-with-rspec

简而言之(缩短的代码):

规范助手:

config.use_transactional_fixtures = true
config.use_instantiated_fixtures  = false

工厂.rb:

Factory.define :state do
  f.name "NY"
end

在我的规范中

before(:each) do 
  @static_model = Factory(:state) # with validate uniqueness of state name
end

错误:

duplicate entry name "NY" etc.


问题: rspec 不应该在每个规范示例之前清除数据库,从而不会引发重复输入错误吗?

最佳答案

我认为不对的事情:

  • 您是否使用 rake spec 来运行您的测试套件:从头开始构建数据库(以确保没有任何问题)
  • 您是否在任何地方使用 before (:all) ?因为无论您在 before :all 中创建什么,都应该在 after :all 中再次删除,否则它会继续存在。

关于ruby-on-rails - factory_girl + rspec 似乎不会在每个示例后回滚更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3333743/

相关文章:

ruby-on-rails - Rails : set a model attribute as read-only, 但允许通过方法更新

ruby-on-rails - 如何运行一个简单的 each-do 循环来组合来自不同表的列? (返回率)

ruby-on-rails - rails - link_to 同一页面但带有 anchor ->不重新加载

ruby-on-rails - 运行请求规范时显示服务器输出

javascript - 如何像Twitter一样显示不改变url的输入表单?

mysql - 避免大数据集中的N+1查询

ruby - Rspec:电子邮件正文中的 click_link

ruby-on-rails - rspec 路由测试和主机

ruby-on-rails - 如何使用 FactoryGirl 初始化名为 'sequence' 的列

ruby - Fog 上的请求中 Nil 不会变成 null