## 테스트코드 작성 1. 어떤 어노테이션이 있는지 - @SpringBootTest 전체 스프링 애플리케이션 컨텍스트를 로드하고 통합 테스트를 수행하는 데 사용됩니다. 실제 애플리케이션 환경과 유사한 환경에서 테스트를 수행할 수 있습니다. 테스트 대상 컴포넌트와 관련된 모든 빈을 자동으로 로드합니다. 주로 통합 테스트에 사용됩니다. - @WebMvcTest 스프링 MVC 레이어만 로드하고 웹 레이어에 대한 슬라이싱 테스트를 수행하는 데 사용됩니다. 웹 관련 컴포넌트(컨트롤러, 필터, 핸들러 등)만 로드되고, 서비스나 리포지토리 레이어는 로드되지 않습니다. 웹 레이어 테스트에 집중할 수 있습니다. - @DataJpaTest JPA 리포지토리 레이어만 로드하고 데이터베이스 관련 테스트를 수행하는 데 사용됩니다. 임베디드 데이터베이스를 자동으로 구성하고 리포지토리 빈을 로드합니다. 데이터베이스 관련 기능을 테스트할 때 유용합니다. - @RestClientTest REST 클라이언트 컴포넌트만 로드하고 테스트할 수 있습니다. 외부 API 호출 및 통합 테스트에 유용합니다. - @MockBean 특정 빈을 Mock 객체로 대체하여 격리된 환경에서 테스트할 수 있습니다. 외부 의존성을 Mock으로 대체하여 부작용 없이 테스트할 수 있습니다. - @MockMvc 서블릿 컨테이너를 시뮬레이션하고, 웹 계층(컨트롤러 등)에 대한 단위 테스트를 수행할 수 있습니다. 실제 서블릿 컨테이너 없이도 웹 계층을 테스트할 수 있습니다. 2. 서비스 테스트에서 Repository 의존성을 없애고 싶을 때 - Mock을 사용해서 임시 객체를 만든다. -> 만든후에 `@InjectMocks` 사용. - @InjectMocks 애너테이션이 적용된 객체는 해당 객체의 생성자나 필드, setter 메서드 등에서 참조하는 의존성 객체들을 Mockito가 자동으로 Mock 객체로 주입해줍니다. - 이를 통해 테스트 대상 객체를 격리시켜 독립적으로 테스트할 수 있습니다. - 통합 테스트를 할 경우 `@Mockbean`을 사용한다. - 이 애너테이션을 사용하면 ApplicationContext에 포함된 특정 Bean 객체를 Mock 객체로 대체할 수 있습니다. ## 웹 테스트 도구 설치 및 사용법 ### PostMan - 여러가지 http 요청을 간편하게 날려볼 수 있음 - 쿼리나 body도 원하는 형식에 맞춰서 요청할 수 있음 - 헤더 또한 postman이 알아서 맞춰줌 ### IntelliJ .http - IntelliJ IDEA에는 여러 http 요청을 작성하고 실행할수 있는 도구들이 내장되어있습니다. - .http 파일은 이 도구에서 http 요청을 정의하고 관리하는 데 사용됩니다. - .http 파일을 통해 여러가지 요청을 작성할수있고 이렇게 작성된 파일은 http 클라이언트 도구에서 실행되고 응답 헤더와 본문을 IDE에서 확인할수있습니다. ###