【发布时间】:2017-03-23 23:34:43
【问题描述】:
我有各种使用 Rails 中的 FactoryGirl 创建模型的测试
it "does something" do
user = create(:user)
...
expect(user.name).to eq("foo")
end
我注意到每次运行规范套件时,它都不会重置测试架构上的表 ID(使用 Postgres)。因此,在多次执行之后,user 可能会有一个类似于2894 的id。
我使用 Database Cleaner 在后续运行之间清理我的数据库 - 见下文。
有没有办法在 rspec 运行之间直接重置表 ID?我以前工作过的一家公司使用他们的应用程序做到了这一点,但我不知道是如何做到的。
如果 #1 不是一个选项,是否可以在运行之间删除并重新创建测试数据库?
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:deletion)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, js: true) do
DatabaseCleaner.strategy = :deletion
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
【问题讨论】:
标签: ruby-on-rails postgresql rspec