TroubleShooting

MockMvc 주입안되는 문제

에디개발자 2021. 4. 1. 07:00
반응형

나를 닮았다고 한다...

현상

@SpringBootTest
@AutoConfigureMockMvc
@TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL)
internal class StoreControllerTest(val mockMvc: MockMvc) {

    @Test
    @DisplayName("store id로 store를 조회")
    internal fun getStoreTest() {
        mockMvc.perform(get("/stores/{id}", 1))
            .andExpect(status().isOk)
            .andExpect(jsonPath("\$.id").value(1))
            .andExpect(jsonPath("\$.name").value("스토어1"))
            .andExpect(jsonPath("\$.address").value("주소1"))
            .andDo(print())

    }
}    

위와 같은 코드로 작성하고 테스트를 실행하면 MockMvc를 주입받을 수 없다는 메시지가 출력됩니다. 

No qualifying bean of type 'org.springframework.test.web.servlet.MockMvc' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

 

원인

WebFlux환경에서 테스트를 진행하고 있었습니다. 

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-webflux")
}    

MockMvc를 사용할 때는 WebFlux환경에서는 불가하고 합니다. 

해결

Web환경으로 테스트를 진행하면 정상작동됩니다.

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
}
반응형