CRUD 테스트를 리포지토리 메소드를 이용해서 완료했으면 ,
Hal Explorer 로 기본적인 REST API를 구현해보자
Data Rest 와 Hal Explorer 디펜던시를 추가해준다.
그리고 application.yaml 파일에 jpa 셋팅에 해당 데이타 레스트 설정을 추가해준다.
detection-strategy 같은 경우엔 어노테이티드 된 레포지토리만 REST 소스로 사용한다는 의미라고 알고있다. (가물가물 😌)
그리고 스트링부트 어플리케이션을 실행 시키고, 서버를 가동한뒤에 설정한 주소인 localhost:8080/api 로 접속하면 해당 화면이 출력된다.
너무 간편하게 REST API 를 동작시킬수 있다
저기서 Articles 옆에 < 를 클릭하면 이 화면이 뜬다
Get 이라고 친절히 알려준다.
마찬가지로 +를 클릭하면 Post, > 를 클릭하면 Put, X 를 클릭하면 Delete 가 나온다.
이걸로 간단하게 REST API 를 구현이 가능하다.
Hal Explorer 로 구현한 REST API 를 테스트코드를 작성해서 테스트를 할 수 있다.
MockMVC 를 이용해 MVC 테스트를 할 수 있다.
테스트 어노테이션으로는 @AutoConfigureMockMVc 와 @SpringBootTest 를 붙인다.
그리고 레포지토리와 똑같이 private final 로 mockmvc 를 선언해주면 생성자를 선언하라는 문구가 뜬다. 생성자를 선언해주고 repository 와 마찬가지로 테스트 클래스이기 때문에 @Autowired 어노테이션을 붙여준다.
그리고 Given when then 방식으로 테스트 코드를 작성해준다.
게시글을 요청했을때 게시글들의 json 을 불러오는지에 대한 테스트코드이다
mockmvc 에서 제공하는 메소드를 호출한다.
/api/articles 를 불러오고, 요청 상태가 ok 일때 (번호 200), 미디어 타입으로 application/hal+json 을 출력하는지 테스트 하는 코드이다.
해당 작성값은 hal explorer 를 참고하면 좋다.
content-type이 hal+json 이고, response statuss가 ok 일때 저 페이지가 출력이 되느냐를 테스트 하는 코드이다.
이런식으로 테스트 코드를 게시글 리스트 출력, 게시글 단건 출력, 댓글출력
이런식으로 테스트 코드를 작성해보자.
이런식으로 댓글까지 작성해보고 테스트한다. andDo 같은 경우에는 true 를 리턴할때 할 행동을 호출해주는 메소드이다. 댓글이 불러와졌으면 해당 댓글을 출력하라는 테스트 메소드이다.