inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

인가 인터셉터 구현

AdminTestController 질문

225

JoonHo Kim

작성한 질문수 6

0

안녕하세요.

AdminTestController는 테스트 패키지로 구성하여 Mock객체로 테스트하지 않고 소스단 패키지로 구성하여 테스트 하시는 이유가 있으신지 문의 드립니다.

spring-boot JPA web-api

답변 1

0

구파고

해당 강의는 테스트 코드 작성하는 방법을 다루는 강의가 아니고, 테스트 코드 작성이 익숙하지 않으신분들도 있으셔서 따로 테스트 코드는 작성하지 않았습니다. 테스트 코드를 작성해서 테스트하셔도 됩니다!

0

JoonHo Kim

네. 말씀 주신대로 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());
    ;
}

1

구파고

테스트만 강의에서 다루려면 몇시간 정도는 더 필요했을꺼에요!

테스트 코드를 작성할 때 저만의 팁을 드리면 @SpringBootTest나 @WebMvcTest 없이 (스프링을 사용하지 않고) 테스트 코드를 작성하면 스프링을 띄우지 않기 때문에 테스트 속도가 엄청나게 빨라집니다.. 그리고 최대한 mock을 활용해서 구현하고있구요

MockMvcBuilders.standaloneSetup 를 사용하면 @WebMvcTest 없이도 테스트코드를 작성할 수 있는데 이것도 한번 찾아보시면 도움이 많이 될겁니다

 

0

JoonHo Kim

꿀팁 감사합니다 :)
오늘 MockMvcBuilders.standaloneSetup 해봐야겠네요...

OAUTH2 질문

0

97

2

카카오토큰관련

0

82

2

auditing

0

77

1

전역에러처리질문

0

115

2

토큰 발급 관련 문의 드립니다.

0

131

2

이 흐름이 맞을까요??

0

127

2

OpenFeign을 어떤 상황에서 어떻게 사용하는지 감이 안옵니다...

0

220

2

도메인형 패키지 구조 질문

0

242

1

application.yml token 선언 시 오류

0

322

1

토큰발행시 500 INTERNAL_SERVER_ERROR

0

158

1

oauth 회원가입 시 필수 추가 정보는 어떤 식으로 받으시나요?

0

288

2

io.jsonwebtoken.security.WeakKeyException 해결방법

0

387

1

리프레시 토큰 사용 관련 문의 건

0

336

1

Xss 에서 WebConfig 오류 발생됩니다.

0

673

1

applycation.yml 의 readTimeout 이 적용이 안됩니다.

0

697

2

강사님 Swagger에 질문드립니다.

0

294

2

kakao token 발급 시 에러

0

732

2

아직 초반부분인데 질문이있습니다.

0

205

1

socialLoginApiService map 주입

0

291

1

전역 에러 처리 메시지 관리

0

608

2

안드로이드 스튜디오와 협업

0

646

2

String accessToken = authorizationHeader.split(" ")[1];은 accessToken이 맞나요?

0

312

1

SocialLoginApiServiceFactory 생성자 관련 질문입니다.

0

257

1

OAuthAttributes 클래스의 toMemberEntity의 파라미터로 memberType이 들어가야하는 이유가 궁금합니다.

0

445

2