0

Rails 4 サイトにいくつかのモデルがあり、ユニット テストを行っています。Aは、モデルを通じてClazz多くの をもつことができます。StudentEnrollment

適切に単体テストを行うClazzには、クラス、登録、および学生の種類と量の何千もの異なる順列を作成する必要があります。この点で使用.ymlするのは非常に面倒なので、ファクトリ ヘルパー メソッドを作成する必要があると思います。テストのためだけに新しいロジックを作成するときに反則を唱える人がいることは知っていますが、それを回避する方法がわかりません。

私のファクトリ メソッドでは、モデルをそれぞれ 1 つのテストでのみ使用することを意図しているため、 .new(ie ) を使用してオブジェクトを作成しました。Clazz.new()ただし、モデルは で作成されているため、モデル内.newActiveRelationコードが正しく機能しません。例えば

class Clazz
    def cash_enrollments
        enrollments.where(payment_type: 'cash')
    end
end

オブジェクトがデータベースにないため、このcash_enrollmentsメソッドはテストでゼロ レコードを返します。

これらのテストをどのように処理すればよいですか?

を使用する場合.create、データ セットを既知の状態に保つために、そのテストで使用したモデルをすべて削除する必要がありますね。それは退屈でエラーが発生しやすいようです。

を使用しない場合、パフォーマンスの低下を確実に引き起こす.create一連の呼び出しを追加してモデル コードを書き直す必要がないように、これらのオブジェクトを構築するにはどうすればよいでしょうか。.to_a

4

1 に答える 1