-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
AdminTestController 질문
22.12.17 09:15 작성 조회수 154
0
안녕하세요.
AdminTestController는 테스트 패키지로 구성하여 Mock객체로 테스트하지 않고 소스단 패키지로 구성하여 테스트 하시는 이유가 있으신지 문의 드립니다.
답변을 작성해보세요.
0
구파고
지식공유자2022.12.17
해당 강의는 테스트 코드 작성하는 방법을 다루는 강의가 아니고, 테스트 코드 작성이 익숙하지 않으신분들도 있으셔서 따로 테스트 코드는 작성하지 않았습니다. 테스트 코드를 작성해서 테스트하셔도 됩니다!
![JoonHo Kim님의 프로필](https://cdn.inflearn.com/public/main/profile/default_profile.png?w=48)
JoonHo Kim
질문자2022.12.18
네. 말씀 주신대로 MockMvc 객체로 테스트 코드를 작성해 보았습니다.
테스트 시 Jasypt 비밀번호를 vm option에 담지 않고 applicatoin.yaml에 담아서하는 번거로움이 있네요.
이런 처리까지 수업에 다루었으면 수업이 좀 길어지긴 하겠네요...
@Test
@DisplayName("어드민 조회")
void adminTest() throws Exception {
//given
OauthLoginDto.Request request = new OauthLoginDto.Request();
request.setMemberType("KAKAO");
ResultActions resultActions = this.mockMvc.perform(post("/api/oauth/login")
.header(HttpHeaders.AUTHORIZATION, "Bearer " + "G5EFX6woTVPfJOShl5OEO1_y7bnX8Q5BiyNo9mWCCinI2QAAAYUkSX77")
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
);
OauthLoginDto.Response response = objectMapper.readValue(resultActions.andReturn().getResponse().getContentAsString(), OauthLoginDto.Response.class);
//when & then
this.mockMvc.perform(get("/api/admin/test").header(HttpHeaders.AUTHORIZATION, "Bearer " + response.getAccessToken()))
.andDo(print())
.andExpect(status().isForbidden());
;
}
구파고
지식공유자2022.12.21
테스트만 강의에서 다루려면 몇시간 정도는 더 필요했을꺼에요!
테스트 코드를 작성할 때 저만의 팁을 드리면 @SpringBootTest나 @WebMvcTest 없이 (스프링을 사용하지 않고) 테스트 코드를 작성하면 스프링을 띄우지 않기 때문에 테스트 속도가 엄청나게 빨라집니다.. 그리고 최대한 mock을 활용해서 구현하고있구요
MockMvcBuilders.standaloneSetup 를 사용하면 @WebMvcTest 없이도 테스트코드를 작성할 수 있는데 이것도 한번 찾아보시면 도움이 많이 될겁니다
답변 1