メソッド内でLocalDateTime
オブジェクトを使用してクラスをモックしようとしています。私を見つけたjava.time.LocalDateTimePowerMockitoを使用したLocalDateTimeの模擬
には見られない[ソースエラー] toInstant(java.time.ZoneOffset):
java.lang.IllegalStateException理由:クラスをモックすることは原因this関連する質問(クラスは最終的なもの) - とテストではそうしようとした:
PowerMockito.mockStatic(LocalDateTime.class);
しかし、私はまだ同じエラーを取得します。非稼働テストのセットアップは、次のとおりです。
MockitoはメソッドtoInstant
呼び出すことができるように私が正しくLocalDateTime
クラスをモックするにはどうすればよい@Before public void setUp() { PowerMockito.mockStatic(LocalDateTime.class); LocalDateTime ld = LocalDateTime.now(); Instant now = Instant.now(); now.atOffset(ZoneOffset.UTC); PowerMockito.when(LocalDateTime.toInstant(any(ZoneOffset.class))).thenReturn(now); // <= fails with above exception }
?あなたは
@PrepareForTest(LocalDateTime.class)
を使用してテストのため、これらのクラスを用意する必要がJDKからモッククラスに
私は、あなたがリンクした答えの両方の点に同意します: 'LocalDateTime'と対話するクラスを@PrepareForTestする必要があります。理想的にはあなたのコードをリファクタリングする必要があります。テスト用のClockインスタンスを作成できます。二重引用符として閉じます。少なくとも@PrepareForTestで編集して、その答えが十分でない理由を示してください。 –