Rails 4 サイトにいくつかのモデルがあり、ユニット テストを行っています。Aは、モデルを通じてClazz
多くの をもつことができます。Student
Enrollment
適切に単体テストを行うClazz
には、クラス、登録、および学生の種類と量の何千もの異なる順列を作成する必要があります。この点で使用.yml
するのは非常に面倒なので、ファクトリ ヘルパー メソッドを作成する必要があると思います。テストのためだけに新しいロジックを作成するときに反則を唱える人がいることは知っていますが、それを回避する方法がわかりません。
私のファクトリ メソッドでは、モデルをそれぞれ 1 つのテストでのみ使用することを意図しているため、 .new
(ie ) を使用してオブジェクトを作成しました。Clazz.new()
ただし、モデルは で作成されているため、モデル内.new
のActiveRelation
コードが正しく機能しません。例えば
class Clazz
def cash_enrollments
enrollments.where(payment_type: 'cash')
end
end
オブジェクトがデータベースにないため、このcash_enrollments
メソッドはテストでゼロ レコードを返します。
これらのテストをどのように処理すればよいですか?
を使用する場合.create
、データ セットを既知の状態に保つために、そのテストで使用したモデルをすべて削除する必要がありますね。それは退屈でエラーが発生しやすいようです。
を使用しない場合、パフォーマンスの低下を確実に引き起こす.create
一連の呼び出しを追加してモデル コードを書き直す必要がないように、これらのオブジェクトを構築するにはどうすればよいでしょうか。.to_a