오늘
Hamcrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다.
Assert의 Equals를 사용했을 때, failed 콘솔 창
Hamcrest의 equalTo를 사용했을 때 failed 콘솔 창
코드
assertThat에 첫번째 파라미터 값은 실제 값(actual) 두번 째 파라미터 값은 기대하는 값, 예상하는 값(expected)
faild 값을 보면 Hamcrest 가 Assertions 보다 더 잘 읽히는 것을 알 수 있다.
JUnit 버전
Hamcrest 버전
MockMve 를 이용해서 편리하게 Tomcat 같은 서버 필요없이 테스트가 가능하다.
gson 을 통해서 Json 타입으로 편하게 변경해준다.
postTest 케이스를 만들어서 post로 값을 넣어준다.
mackMvc.perform ( post )를 사용하면 마치 postman에서 post 를 전송한 기능과 같아진다.
accept 는 Response(응답) 데이터 형식
contenType 는 Request(요청) 데이터 형식
content 는 Requesst(요청) 할 때 작성하는 Body
.andExpect(status() ~ ) 는 기대(예상)하는 Http Status
.andExpect(header().string("Location", is( ~) 는 header부분이 v11/member/ 로 시작하는지
given
테스트를 진행하기 위한 준비 과정
Request Body에 들어 갈 내용
when
테스트를 진행 할 대상
MockMvc로 controller 호출
then
테스트 결과
response Body에 들어갈 내용
@DataJpaTest 애너테이션을 붙여주면 MemberRepository 의 기능을 사용하기 위한 Configuration을 Spring이 자동으로 해주게 된다.
또, DataJpaTest 애너테이션 안에는 Transactional 애너테이션도 같이 포함되어 있어,
하나의 테스트 케이스가 완료 되는 시점에 데이터 베이스에 저장되어 있던 데이터를 rollback 해준다.,
Patch 하는 부분.
제일 어려웠던 전체조회
controller 에서 page로 값을 받기 때문에 size랑 page 넣어줌.
그리고 $.data.email"
이 부분에서 $
표시는 json 응답 자체를 얘기하기도 하고 root 최상위를 얘기하기도 한다고 한다. 이건 정해져 있는 규칙.
그리고 data를 왜 붙이냐하면
postman 응답 데이터를 보면 맨 앞에 data : {
라고 되어 있는 것을 볼 수 있다.
그렇기에 data에서 들고 오는 것이다.