DateTimeクラス等に依存したクラスをテストするのは難しい。
オブジェクトが生成された日時を正確に知らないといけないから。
例えば本の貸出しを表現したコード
このクラスをテストしたい場合。
DateTimeクラスへの依存を下げるためにコンストラクタで渡すようにすると・・・
依存度が下がってテストもできるようになったけど、コンストラクタの第2引数はテストの時しか使わない。プロダクトコードには不要なもの。。。
後々、貸出冊数も渡そうとすると更に酷いことに。
そこで、DateTimeを差し替えられるようにstaticメソッドを用意しておくのはどうだろう。
こんな感じ。
DIを勉強すればもっと良い方法があるのかな。
まだまだ勉強不足です。