railsでRspecを使っていますが、テストデータベースをexampleごとにクリーンにするためにDatabaseCleanerを使いたいと思っています。
こちらのDatabaseCleanerのREADMEにはrspecでDatabaseCleanerを使う場合の例が載っていますが、各ブロックで何をやっているのかいまいち理解できませんでした。
Everyday Rails - RSpecによるRailsテスト入門にもREADMEとほぼ同じ内容の下記設定がありますが、この説明文を見ても理解できません。
RSpec.configure do |config| # Configure DatabaseCleaner to reset data between tests config.before(:suite) do DatabaseCleaner.strategy = :transaction DatabaseCleaner.clean_with :truncation end config.around(:each) do |example| DatabaseCleaner.cleaning do example.run end end config.after(:each) do DatabaseCleaner.clean end end
よく理解できない点
config.before(:suite) ブロック
各example前にトランザクションでロールバックして、次にトランケートでデータの全件削除をしていると思いますが、何故このように2段階の処理をする必要があるのか?
config.around(:each)ブロック
- config.aroundが何のブロックかわからない
- DatabaseCleaner.cleaningブロックはDatabaseCleaner.startとDatabaseCleaner.cleanをするブロックだと思うが、本当にそうなのかよくわからない
- example.runの意味がわからない
config.after(:each)ブロック
example後にデータの削除をしているのだと思うのですが、前述のconfig.before(:suite)でデータの削除を事前にするのに、何故事後にもわざわざ削除をしようとしているかがわからない
各ブロックでやっていることや関連性についてご教示いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/08 14:30
2016/11/09 08:08