Я нахожу, что мне часто нравится писать методы, которые просто запрашивают базу данных и возвращают результаты. Это действительно полезно для сложных фильтров или запроса «цепочка». Например, вот модель Clazz
, которая представляет собой академический класс студентов. Clazz
имеет много Enrollment
s. Поэтому я написал этот метод, чтобы сохранить мой код DRY, так как я использовал этот критерий много.Переписывание метода, подлежащего тестированию по модулю
class Clazz
def cash_enrollments
enrollments.where(payment_type: 'cash')
end
end
Как я получаю больше в модульное тестирование, я заметил, что эта модель является проблематичным, так как он слишком тесно связан с базой данных. Проблема усугубляется при тестировании больших наборов данных по мере запуска транзакций базы данных.
Есть ли способ, «совместимый с модулем», чтобы переписать этот код? Будет ли еще один общий шаблон, который будет лучше?
Вы можете окурок его: 'clazz.should_receive (: cash_enrollments) .and_return ([this_prebuilt_array])' –
не совсем уверен, но проверить хранилище шаблон –