使用RSpec测试我的模型时,我使用以下代码清理我的数据库:
config.before(:suite) do
begin
DatabaseCleaner.start
ensure
DatabaseCleaner.clean
end
end
config.after(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
我的所有模型测试都通过,但是当我测试我的控制器时,它们似乎使用了我的模型操作的相同数据集,使我的测试错误。
我可以通过使用此代码来传递我的Controller测试:
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
然而,这导致我的模型测试失败。关于如何在不破坏一组测试或另一组测试的情况下组合这些块的任何建议?
答案 0 :(得分:1)
您没有提及database_cleaner的任何特定版本,也没有提及您的数据库。但是RSpec中database_cleaner的最新配置使用了一个around过滤器
https://github.com/DatabaseCleaner/database_cleaner#rspec-example