私がsqliteを使用していたとき、この設定はうまくいきました:
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
controller.stub(:should_navigate_user?).and_return(false) rescue ""
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
PostgreSQL に切り替えたとき、テストがデータベース内のエントリの ID 数に依存しているときにエラーが発生し始めました。テスト中にデータベースを調べましたが、データベースがクリーンアップされることはありませんでした。
次の構成に切り替えると:
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.clean
controller.stub(:should_navigate_user?).and_return(false) rescue ""
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
すべてのテストに合格しましたが、メソッド テストの前後にclean を呼び出さなければなりませんか?
各テストの前後にデータベースをクリーンアップする必要はありません。どこかで何かを誤解しているような気がします。私は何を理解できていません。