Spring,SpringBoot

mock mvc 테스트시 본문의 값이랑 비교하는 방법, 테스트 코드에러, 연관관계 메서드 제거

Lahezy 2023. 5. 2.
728x90

1번 삽질(mock mvc에서 Http 메서드를 잘못 작성)

 

삽질시에 참고한 글(근데 해당 문제가 아니었다)

[1번글] [2번글]

 

 

 

약 한 시간 버린 실수였다

mock mvc를 이용하여 테스팅을 하는데 swagger로 할 때는 값이 나왔다.

그래서 단일 값에 대한 json으로 값이 들어와야만 비교 가능한 줄 알고 싱글톤 객체로도 보내봤다. -> 그래도 안 되는 문제

그래서 결론적인 문제는? mock mvc의 HTTP Method를 잘못 적었다.

조회(Get)를 해야 하는데 삭제(Delete) 메서드를 호출했다는 것

이상하다 싶으면 내 코드를 먼저 봐야겠다 

 

아 그래도 배운 점 1개

ResponseBody에 단일값, 응답 본문내용 자체를 비교하고 싶은 경우에

content(). string(원하는 string)로 비교하면 된다.

. andExpect(content(). string("true")); 로 응답본문을 비교할 수 있다.

 

2번 실수 : 연관관계를 제거하지 않아서 발생한 문제 

좋아요를 삭제하는 기능을 테스트했다 컨트롤러 단에서 에러가 나서 

원래는 서비스 테스트를 하지 않으려 했지만 테스트 코드의 중요성을 느끼면 서비스 단을 테스트했다.

 

근데 서비스 테스트도 통과되지 않는 문제 (오히려 좋아 네가 문제였군 🕵🏻‍♀️)

이 경우에도 swagger로 테스트 시에는 삭제가 되는데(로그로 확인하였다) mock mvc에서 오류가 발생했다.

 

한참 찾다가 설마 연관관계문제로 인한것이가 하고 아래와 같이 기존의 객체들에 들어있는 것도 삭제되도록 하였다.

수정 후에는 코드가 잘 동작되는 것을 확인할 수 있었다.

연관관계메서드도 잘 관리해야겠다.

 

오늘 약간 왠지 모르겠는데 정신이 빠졌다 그리고 시간이 너무 잘 갔다 정신 차리자! 

 

오늘의 고민은 

Delete /post/{postId}/like 인데

Delete /post/{postId}/like/{postHeartId} 로 하는 게 더 Rest 한 것인지 고민이다.

728x90

댓글