【Spring Boot】@SpyBeanの代替JUnit実装
SpringBoot3.3から3.4にアップデートすると今まで使用していたものが非推奨になることがあります
一つが「@SpyBean」
これを代替する実装を紹介します!
■ thenCallRealMethodを使用
@MockitoBean
private YourService yourService;
@Test
void testSomething() {
// 特定のメソッドだけ実際のメソッドを呼ぶようにする
when(yourService.someMethod()).thenCallRealMethod();
// テストの実行
}
thenCallRealMethod()
を使用することで、部分的に実装のメソッドを呼び出す「スパイ」的な振る舞いが可能となります
■ @Importを使用
@Importを使用し、明示的にコンテキストへ登録します
@WebMvcTest(controllers = YourController.class)
@Import(YourService.class) // 実際のクラスを使う
class YourControllerTest {
@MockBean
private DependencyService dependencyService; // YourServiceの依存先をモックにする
@Autowired
private YourService yourService;
@Test
void test() {
// 実際のYourServiceが動く状態でテスト可能
}
}
是非参考にしてみてください

是非フォローしてください
最新の情報をお伝えします