[Spring] 단위테스트 @InjectMocks 사용방법
·
Spring/테스트 코드
단위테스트에서 @InjectMocks, @Mock, @Spy에 대한 것을 알아봤다.📌 서론요즘 개발하면서 단위 테스트를 많이 작성하는데 갑작스레 궁금증이 생겼다.단위 테스트에서는 주로 @SpringBootTest가 아니라 @InjectMocks를 사용하는데 이 애노테이션의 이름만 보면 "Inject + Mocks = 목 객체들을 주입한다." 이렇게 해석되는데 이것도 객체에 Mock을 주입하는 거니까 스프링의 의존성 주입과는 뭐가 다를지 알아보고 싶었다. 이렇게 시작된 궁금증으로 직접 단위 테스트를 작성해 보면서 주로 보게 되는 @InjectMocks, @Mock, @Spy 이것들의 관계성을 알아봤다. 또한 테스트 과정에서 인터페이스는 @Mock을 사용해야 했는데 왜 @Spy는 사용할 수 없는지 이것에 ..
[Spring] 예외 테스트의 중요성: 바인딩 오류
·
Spring/테스트 코드
예외 테스트를 왜 작성해야 하는지 경험한 내용을 공유하고자 한다. 📌 서론 내가 겪은 3가지 문제와 이것의 해결과정을 설명하고자 한다. 1. 안드로이드에서 데이터를 requestDto로 잘 보냈는데 스프링 서버에서는 null로만 받는 문제 발생 2. 1번 문제를 해결했더니 데이터 validation 문제 발생 3. 테스트 코드를 작성했는데 왜 이런 문제들이 발생한 걸까? 1. 첫 번째 문제: 데이터를 null로 받음 문제의 코드 아래의 컨트롤러 코드에 데이터를 보내면 모두 null을 받았다. @RequestMapping("/recipe") @RequiredArgsConstructor @RestController public class RecipeLikeController { private final Re..
[Spring] 테스트 코드: @SpyBean으로 @EventListener 검증하기
·
Spring/테스트 코드
이번에는 스프링 이벤트 리스너의 내부 동작 테스트 코드를 통해 검증해 보자 📌 서론 이벤트 기반 아키텍처로 백엔드 개발을 진행할 때 이벤트 리스너가 호출되면 내부에서 작성했던 코드가 제대로 동작하는지 테스트하는 것은 애플리케이션의 정확성을 보장하는 데 굉장히 중요하다. 특히, 이벤트 리스너가 이벤트를 받아서 내부에서 어떤 처리를 하는지 확인하는 것이 중요하다. 이번 포스트에서는 RecipeCreationEvent 이벤트가 발행될 때 saveIngredientsIntoMongo 메서드의 내부에서 동작하는 메서드를 검증해 보자 저번 포스트에 이어지는 내용이니 보고 오시는 것을 추천합니다.👇🏻👇🏻 [Spring] 테스트 코드: @MockBean으로 @EventListener 검증하기 테스트 코드를 통해 스프링..