스프링부트 테스트 정리

노요셉·2021년 2월 20일
0

Spring의 TDD 특징 및 사용법 정리

https://otrodevym.tistory.com/entry/Spring%EC%97%90%EC%84%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BC%80%EC%9D%B4%EC%8A%A4-TDD-%EC%9E%91%EC%84%B1%ED%95%98%EA%B8%B0

MockMvc로 테스트하기
https://elevatingcodingclub.tistory.com/61

TDD 개발방법론
https://grapheople.tistory.com/11

SpringbootTest 통합테스트
https://goddaehee.tistory.com/211

Given WHEN THEN
https://brunch.co.kr/@springboot/292

BDDmockito
https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C


BDDmockito given
테스트를 준비하기 위한 과정 테스트에 사용할 입력값 정의

MockMvc.perform

  • MockMvc가 제공하는 perform()메소드를 사용하면 브라우저에서 서버에 URL 요청을 하듯 컨트롤러를 실행시킬 수 있다.

  • MockMvc의 perform() 메소드는 RequestBuilder 객체를 인자로 받는데, RequestBuilder 객체는 MockMvcRequestBuilder의 정적 메소드를 이용해서 생성한다.

  • MockMvcRequestBuilder의 메소드들은 GET, POST, PUT, DELETE 요청 방식과 매핑되는 get(), post(), put(), delete() 메소드를 제공한다.

    그리고 이 메소드들은 MockHttpServletRequestBuilder 객체를 리턴하는데, 이 객체에 브라우저가 HTTP 요청 프로토콜에 요청 관련 정보(파라미터, 헤더, 쿠키 등)를 설정하듯 다양한 정보들을 설정할 수 있다.

  • 위 코드처럼 param() 메소드를 이용하면 '키=값'의 파라미터를 여러 개 전달할 수 있다.

  • MockHttpServletRequestBuilder의 메소드는 MockHttpServletRequestBuilder 객체를 다시 리턴하기 때문에 메시지 체인을 구성하여 복잡한 요청을 설정할 수 있다.

    MockMvc.perform(get("/restaurants"))

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

  • 체이닝이 지원되어 아래와 같이 여러 검증 기능을 이어서 선언할 수 있습니다.

.andExpect(status().isOK())

  • mvc.perfom의 결과를 검증합니다.
  • HTTP Header의 Status를 검증할 수 있습니다.
  • 우리가 흔히 알고 있는 200, 400, 500 등의 상태를 검증할 수 있습니다.

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

  • mvc.perform의 결과를 검증한다.
  • 응답 본문의 내용을 검증합니다.

verify
해당 로직이 메서드가 수행되었는지 검증합니다.
http://wonwoo.ml/index.php/post/1453
https://lng1982.tistory.com/152

eq
https://kimalam.blogspot.com/2019/01/mockito-argument-matchers-any-eq.html


용어 정리

TDD : test driven development
BDD : behavior driven development

https://brunch.co.kr/@cheuora/42

profile
서로 아는 것들을 공유해요~

0개의 댓글