時刻をパラメータに使用する場合の実装メモ
時刻を扱う場合に、テスト性を持たせるための実装メモ。
インターフェースを介して時刻を実装してやる。
// Kotlin import java.util.* interface SystemClock { fun getTimeMillis(): Long fun getLocale(): Locale fun getTimeZone(): TimeZone } // 使う側の例 import your.package.SystemClock fun setTime(d: SystemClock) { ... } setTime(object : SystemClock { override fun getTimeMillis(): Long { TODO("Not yet implemented") } override fun getLocale(): Locale { TODO("Not yet implemented") } override fun getTimeZone(): TimeZone { TODO("Not yet implemented") } }
テストのときはエッジケースや定数を実装し、本番ではDate()
等を実装すれば( ΦωΦ)σヨシッ!