Spring의 TDD 특징 및 사용법 정리
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 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())
.andExpect(content().string( ... ))
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