0

モデルを 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

ただし、これにより、モデル テストが失敗します。どちらかのテスト セットを壊さずにこれらのブロックを組み合わせる方法について何かアドバイスはありますか?

4

1 に答える 1

1

特定のバージョンの database_cleaner やデータベースについては言及していません。しかし、RSpec の database_cleaner の最新の構成では、around フィルターを使用しています

https://github.com/DatabaseCleaner/database_cleaner#rspec-example

于 2014-07-02T20:46:42.777 に答える