任何人都知道如何在不清理数据库的情况下使用FactoryGirl?换句话说,使用工厂同时保留现有记录完整无缺?编辑:尝试这样做会产生数据库错误,因为新ID与数据库中的现有ID冲突。
我想最大的问题是让FG使用数据库的底层序列/自动增量功能。 (之前测试失败的错误数据与我无关。)
这与Rspec/FactoryGirl: clean database state类似,但我对任何方法都持开放态度。
答案 0 :(得分:0)
Rails应用程序的标准RSpec行为是在每个示例之后回滚数据库事务。这可以在spec/rails_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_transactional_fixtures
设置为false
将阻止RSpec回滚测试数据库事务。通常这样做是为了允许Database Cleaner使用DatabaseCleaner.clean
来管理测试数据库,但是如果删除数据库清理程序(或省略清理步骤),新创建的条目将在您运行更多测试时堆积起来。 / p>
这似乎不是一个特别好的主意 - 你几乎肯定会为每个例子重新创建必要的数据库状态,即使以较慢的测试为代价。
答案 1 :(得分:0)
因此,只要未在工厂定义中明确定义此类列,FactoryGirl就已经使用了数据库的基础序列/自动增量值。