【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が動く状態でテスト可能
    }
}

是非参考にしてみてください

是非フォローしてください

最新の情報をお伝えします