1

RSpec と FactoryGirl を使用してテストを書いています。私のモデルでは、DataMappers が使用されています。ここで RSpec では、2 つのオブジェクト A、B、および C を使用しているコントローラーの 2 つのメソッド update および index 関数をテストしています。以下のように FactoryGirl を使用してそれらを作成しました。

before(:each) do
  @A = FactoryGirl.create(:A)
  @B = FactoryGirl.create(:B)
  @C = FactoryGirl.create(:C)
end

ここで、DataBase Cleaner Gem を使用して各テストの後にそれらをクリーニングしたいと考えています。Google で検索しましたが、ほとんどの記事では ActiveRecord で DataBase クリーナー Gem を使用する方法について説明していますが、DataMapper で DataBaseCleaner gem を使用する方法を明確に指定しているものはありません。したがって、DataMapper が使用されている DataBase クリーナーを使用した RSpec ファイルの小さな例を誰かが教えてくれたら、本当に感謝します。前もって感謝します。

4

1 に答える 1

2

まず、Gemfile に dm-transactions と database_cleaner があり、spec ヘルパーで両方が必要であることを確認します。

require 'dm-transactions'
require 'database_cleaner'

次に、仕様ヘルパーで次の行を使用して、DataMapper を使用するように DatabaseCleaner を構成する必要があります。

DatabaseCleaner[:data_mapper].strategy = :transaction

仕様でこれに似たものを使用して、DatabaseCleaner にトランザクションの開始時とクリーニングのタイミングを知らせることができます。

before :each do
  DatabaseCleaner.start
end

after :each do
  DatabaseCleaner.clean
end

DatabaseCleaner の readme の詳細: https://github.com/bmabey/database_cleaner

于 2013-10-02T06:53:26.233 に答える