1. ホーム
  2. java

[解決済み] Java 8のjava.time APIで時間をモック化する

2022-11-11 23:11:11

質問

Joda Timeは素敵な DateTimeUtils.setCurrentMillisFixed()があります。 を使って時間を模擬することができます。

テストでは非常に実用的です。

に相当するものはありますか? Java 8のjava.time API ?

どのように解決するのですか?

一番近いのは Clock オブジェクトです。Clock オブジェクトは好きな時間を使って(あるいはシステムの現在時刻から)作成することができます。 すべての date.time オブジェクトにはオーバーロードされた now メソッドがあり、現在の時刻の代わりにClockオブジェクトを受け取ります。 したがって、依存性注入を使用して、特定の時刻を持つClockを注入することができます。

public class MyBean {
    private Clock clock;  // dependency inject
    ...
    public void process(LocalDate eventDate) {
      if (eventDate.isBefore(LocalDate.now(clock)) {
        ...
      }
    }
  }

参照 クロックのJavaDoc を参照してください。