에궁.. 오늘은 배운..것도 배운 거지만 진짜 반성해야된다.
어줍잖게 테스트코드를 써놓고 추가개발 할 때는 사용하지 않으면 빌드에 영향을 준다는 사실을 일하면서 내내 겪어놓고 또 이랬다~~
원래 문제는 travis연동하면서 발견한거라 혹시나 했는데 결국 빌드시 테스트코드의 오류였다.
초기 개발때 사용한 부분인데, 추가개발 할 때는 포스트맨과 웹으로만 하다보니까 잊혀졌던..^^
초기개발에 없던 parameter가 추가되면서 테스트코드에도 추가를 해줘야 하는데, 이게이게.. 세션을 가져오는 거라 조금 헤맸다ㅜㅜ
@PutMapping("url")
public Long update(@RequestBody Member member, @LoginUser SessionUser user) {
return 1;
}
이런 코드라 가정할 때, 초기엔 member만 넘겨주면 되는데 추가로 session에 담은 저 user가 비어서 계속 테스트에 통과하지 못했다.
그리고 저 user는 session이기 때문에 member와 같은 방법으로 넘겨주는 것이 아니라 session으로 넘겨줘야 한다. 써놓고보면 너무 당연한 얘기들이다 ㅎ;;
//객체 생성
SessionUser sessionUser = new SessionUser(
User.builder().name("작성자").email("aaa").role(Role.USER).build()
);
// mock http session 을 생성한다!!!!!!!
MockHttpSession session = new MockHttpSession();
session.setAttribute("user",sessionUser);
session.putValue("user",sessionUser);
// >>> 이 두개의 차이를 모르겠는데 테스트 해보니
setAttribute와, putValue 모두 "user"에 담아주기만 하면 값은 넘어간다.
mockMvc.perform(put(url)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.session(session) // <<<<<<<<<<<<<<<<<<< 추가된 부분
.content(new ObjectMapper().writeValueAsString(requestDto)));
.andExpect(status().isOk());
'TIL' 카테고리의 다른 글
[TIL] Stream API method 탐구, map과 filter (0) | 2023.10.24 |
---|---|
[TIL] Spring Security 하나의 url에 두 개의 역할이 가능하도록 권한을 주고싶다 (0) | 2023.10.15 |
[TIL] login with oauth 2.0 페이지 수정해보기.. /login (0) | 2023.09.24 |
[TIL] ./gradlew 무한 로딩..? 에러도 뜨지 않고 먹통될 때 (0) | 2023.09.19 |
[TIL] 서버 배포 시 에러 no main manifest attribute, in {JAR_FILENAME}-plain.jar (0) | 2023.09.18 |