@SpringBootTest
@SpringBootTest
@AutoConfigureMockMvc //SpringBootTest에서는 MockMvc 객체를 사용하려면 해당 어노테이션 선언 필요
class SpringBootTest {
@Autowired
MockMvc mockMvc; // 주입 O
}
@SpringBootTest
@AutoConfigureMockMvc
class SpringBootTest {
@Autowired
MockMvc mockMvc; // 주입 O
@Autowired
UserController userController; // 주입 O
@Autowired
UserRepository userRepository; // 주입 O
@Autowired
UserService userService; // 주입 O
}
@WebMvcTest
Web Layer 관련 빈들만 등록하므로, @Component로 등록된 리포지토리와 서비스는 주입이 되지 않는다.
Web Layer = Security, Filter, Interceptor, Handling, Controller
그러므로, 이외는 @MockBean 을 통해 주입받아야한다.
@MockBean
= Spring Application Context에 Mock 객체를 빈으로 등록하는데 사용되는 annotation
@WebMvcTest
class SpringBootTest {
@Autowired
MockMvc mockMvc; // 주입 O
@Autowired
UserController userController; // 주입 O
//@Autowired
@MockBean
UserRepository userRepository; // 주입 X
//@Autowired
@MockBean
UserService userService; // 주입 X
}