今回はScalaのテストの話。時刻まわりが関わる実装をテストしたい時、テスト中だけ現在時刻を固定したり、現在時刻を過去にしたりなどといったことをやりたいことはよくある。Joda-TimeのDateTime.nowを使って現在時刻を取得している場合、時刻をfakeして固定することが出来たのでメモ。 固定するにはorg.joda.time.DateTimeUtilsのsetCurrentMillisFixedやsetCurrentMillisProviderを利用する。例えば、以下のように時間を固定することができる。 DateTimeUtils.setCurrentMillisFixed(15147648t00000L) // 2018-01-01に固定 println(DateTime.now) // 2018-01-01T09:00:00.000+09:00 DateTimeUtils.s