💭
Mockito(-inline)でstaticメソッドをモックするときの書き方
Mockito, Mockito Inline を利用して static メソッドをモックする書き方について。
基本は mockito-core/4.0.0 - 48. Mocking static methods (since 3.4.0) 紹介の以下。
try (MockedStatic mocked=mockStatic(Foo.class)) {
mocked.when(Foo::method).thenReturn("bar");
assertEquals("bar",Foo.method());
mocked.verify(Foo::method);
}
ただ、場合によっては以下の書き方も便利かも。例えば以下に該当するときなど。
-
mocked
を複数回verify
するとき - 複数テストで共通のスタブが必要なとき
private static final
MockedStatic<Foo> mocked = mockStatic(Foo.class);
@AfterAll
static void afterAll(){
mocked.close();
}
@BeforeEach
void setUp(){
mocked.reset();
mocked.when(Foo::method).thenReturn("bar");
}
@Test
void テスト1(){
assertEquals("bar",Foo.method());
mocked.verify(Foo::method);
}
@Test
void テスト2(){
mocked.verify(Foo::method2);
}
Discussion