0

データベースにクエリを実行して結果を返すだけのメソッドを書くのが好きなことがよくあります。これは、複雑なフィルターやクエリの「連鎖」で非常に役立ちます。たとえば、Clazz学生のアカデミック クラスを表すモデルを次に示します。Clazz多くEnrollmentの s があります。この基準を頻繁に使用したため、コードを DRY に保つためにこのメソッドを作成しました。

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

単体テストに取り掛かるにつれて、このパターンはデータベースとの結合が強すぎるために問題があることに気付きました。データベース トランザクションの実行中に大規模なデータセットをテストすると、問題が悪化します。

このコードを書き換える「単体テストに適した」方法はありますか? より良い別の一般的なパターンはありますか?

4

1 に答える 1