次のオブジェクトと関係があります。
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
明らかに、質問モデルの状態は、テストとクラスの状態に結合されています。
単体テストを作成するとき、これをテストするには、この状態をすべてセットアップする必要がありますが、特にビジネス ケースがますます複雑になるにつれて、これは非常に扱いにくくなります。
どうすればこれを回避できますか?