0

Rails 4 アプリを新しい MiniTest でテストする方法に関する情報を探すのに何時間も費やしましたが、誰もが rspec を使用しているようです。私はすべてのレベルのアプリケーションをテストしようとしていますが、現在、永続化されたデータをテストする方法にこだわっています。たとえば、User所属するモデルがありAccount、登録と認証、およびすべての認証後のことをテストしたいと考えています。現在、私のテストはすべて永続的ではありません。モデルレベルのテストでは、テストの実行ごとにユーザーが作成されます。

ただし、一部のデータを永続化したい場合があります。たとえば、少数のユーザー アカウントや、アカウントにリンクされたプロジェクトなどです。実行するたびにそれらを再作成したくありません。しかし、rails 4 と MiniTest に関する情報は見つかりませんでした。

では、データを永続化するには何を使用すればよいでしょうか? フィクスチャまたはseed.rb? コントローラーの統合テスト中にデータをリセットする方法は?

4

4 に答える 4

1

テストを実行するたびに、それらはクリーンなデータベースで実行されます。他の人が言ったように、アプリケーションのロジックをテストする必要があります! FactoryGirlを使用して、テストに永続性を追加できます。独自のファクトリを定義し、テストでそれらからオブジェクトを作成できます。

たとえば、ファクトリの定義は簡単です。

FactoryGirl.define do
  factory :user do
    first_name "John"
    last_name  "Doe"
    admin false
  end
end

その後、テストでこのファクトリを呼び出すことができます。

# Returns a User instance that's not saved in database
user = FactoryGirl.build(:user)

# Returns a saved (in database) User instance
user = FactoryGirl.create(:user)

また、ユーザーの属性に独自の値を指定できます。

jane_doe = FactoryGirl.create(:user, first_name: "Jane", last_name: "Doe")

あなたの状況で、Account クラスのファクトリを作成し、関連付け (ユーザー) をファクトリに追加する場合:

FactoryGirl.define do
  factory :user do
    first_name "John"
    last_name  "Doe"
    admin false
  end
  factory :account do
    acc_number 123456789
    full_name "John Doe"
    association :user, factory: :user 
  end
end

FactoryGirl の詳細については、こちらをご覧ください。

また、データベースのクリーンアップについては、Database Cleaner gemを参照してください。設定が簡単で、機能します!

それが役立つことを願っています!

于 2013-09-10T19:56:04.183 に答える
0

私があなたのことを正しく理解していれば (完全には確信が持てませんが)、factory_girlは、テストに使用できる「永続的なデータ」を提供するという点で、あなたが望むことを行っていることに気付くかもしれません。

于 2013-08-26T19:58:55.840 に答える