Rspec 工厂女工不打扫?

Rspec 工厂女工不打扫?,rspec,factory-bot,Rspec,Factory Bot,有人知道一种不用清理数据库就可以使用FactoryGirl的方法吗?换言之,在使用工厂的同时保留完整的现有记录?编辑:尝试这样做会产生数据库错误,因为新ID与数据库中的现有ID冲突 我想最大的问题是让FG使用数据库的底层序列/自动增量功能。(以前测试失败的错误数据与我无关。) 这类似于,但我对任何方法都持开放态度。Rails应用程序的标准RSpec行为是在每个示例之后回滚数据库事务。这可以在spec/rails\u helper中配置: RSpec.configure do |config|

有人知道一种不用清理数据库就可以使用FactoryGirl的方法吗?换言之,在使用工厂的同时保留完整的现有记录?编辑:尝试这样做会产生数据库错误,因为新ID与数据库中的现有ID冲突

我想最大的问题是让FG使用数据库的底层序列/自动增量功能。(以前测试失败的错误数据与我无关。)


这类似于,但我对任何方法都持开放态度。

Rails应用程序的标准RSpec行为是在每个示例之后回滚数据库事务。这可以在
spec/rails\u helper
中配置:

RSpec.configure do |config|
  # 
  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  config.use_transactional_fixtures = true
  #
end
use\u transactional\u fixtures
设置为
false
将阻止RSpec回滚测试数据库事务。通常,这样做是为了允许Database Cleaner使用
DatabaseCleaner.clean
管理测试数据库,但如果删除Database Cleaner(或省略清理步骤),新创建的条目将随着运行更多测试而堆积起来


这似乎不是一个特别好的主意--几乎可以肯定,您最好为每个示例重新创建必要的数据库状态,即使以较慢的测试为代价。

因此,FactoryGirl已经可以处理数据库的底层序列/自动增量值,只要没有在工厂定义中明确定义这样的列。

我尝试排除DatabaseCleaner,但在尝试将1分配给第一个时,仍然会与现有主键发生冲突工厂创建的行。(更新问题以突出显示此问题。)