У меня есть следующие объекты и отношения,
Lecture >- Tests
Test >- Questions
Бизнес правила
When the lecture is started, a test can be given
If a test is being given, questions can be asked
Вывод
Therefore questions shouldn't be asked if the lecture hasn't been started.
Модель вопроса
class Question
belongs_to :test
belongs_to :lecture, :through => :test
def ask_question
raise "Test not started!" unless test.started?
raise "Lecture not started!" unless lecture.started?
end
end
Итак, ясно, что состояние модели вопроса теперь связано с состоянием теста и класса.
При создании модульных тестов, чтобы проверить это, мне нужно настроить все это состояние, что становится довольно громоздким, особенно по мере того, как бизнес-кейсы становятся все более и более сложными.
Как я могу этого избежать?