여니의 프로그래밍 study/Spring & Spring Boot

[스프링부트] MockMvc 관련 메소드

여니's 2022. 3. 21. 11:33

private MockMvc mvc

: 웹 API 테스트(GET,POST 등) 진행시 사용합니다.

스프링 MVC 테스트의 시작점입니다.

 


mvc.perform(get("/hello"))

: MockMVC를 통해 /hello 주소로 HTTP GET 요청을 합니다.

체이닝이 지원됩니다.

 


.andExpect()

: 응답 결과를 검증합니다.

 

- 상태코드 : status()

.isOk() : 200

.isNotFound() : 404

.isMethodNotAllowed() : 405

.isInternalServerError() : 500

.is(int status) : status 상태코드

 

- 리턴하는 뷰 이름 검증 : view()

.name("example") > 리턴하는 뷰 이름이 example인가!

 

- 리다이렉트 응답 검증 : redirect()

redirectUrl("/example") > "/example"로 리다이렉트 되었는가?

 

- 모델 정보 : model()

: 컨트롤러에서 저장한 모델들의 정보를 검증한다.

 

- 응답 정보 검증 : content()

응답에 대한 정보를 검증해줍니다. 

.andExpect(content().string(hello))

: mvc.perform 결과를 검증합니다.

응답 본문의 내용을 검증하는데,

위 코드에서는 Controller에서 hello라는 값을 리턴하는 것이 맞는지 

확인하게 됩니다.

 

- JSON 응답값을 필드별로 검증할 수 있는 메소드 : jsonPath

.andExpect(jsonPath("$.name",is(name))

> $를 기준으로 필드명을 명시합니다.

> name을 검증합니다. 

 

RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    public void hello가_리턴된다() throws Exception {
        String hello="hello";
        mvc.perform(MockMvcRequestBuilders.get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }
}

 

.