[TDD + RESTDocs] 500 에러

Walter Mitty·2023년 5월 24일
0

어려운 RESTDocs.... 깐깐한 자식이구만.

간단한 아이디 중복체크 로직을 테스트 중이었는데, 단순하게 문자열을 받아서 해당 문자열의 중복체크만 하면 되는 거였다.

그런데 만난 500 에러.

해결 방법

Controller 에서
@GetMapping(value = "/duplication-check/{value}", name = "아이디 중복검사") 로 매핑 URL 값을 정해주고 메서드에서는
@PathVariable @NotBlank String loginId 로 받고 있었는데 이 부분을 value로 URL 값에 PathVariable과 맞춰 주니 테스트를 통과했다.

Error Code

Controller.java

@GetMapping(value = "/duplication-check/{value}", name = "아이디 중복검사")
    public BaseResponse<Boolean> dupCheck(@PathVariable @NotBlank String loginId) {
        return BaseResponse.ofSuccess(loginApplicationService.checkIdExists(loginId));
    }

ControllerTest.java

@Test
    @WithMockUser
    void 아이디_중복체크() throws Exception {
        // given
        given(loginApplicationService.checkIdExists(anyString())).willReturn(anyBoolean());
        // when + then
        mockMvc.perform(
            get(
                "/admin/duplication-check/{value}",
                "세리"
            )
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON)
        )
            .andExpect(status().isOk())
            .andExpect(jsonPath("code").value(200))
            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
            .andDo(document("admin/duplication-check",
                getDocumentRequest(),
                getDocumentResponse(),
                pathParameters(
                    parameterWithName("value").description("로그인 아이디")
                ),
                responseFields(
                    fieldWithPath("code").type(JsonFieldType.NUMBER).description("결과 코드"),
                    fieldWithPath("message").type(JsonFieldType.STRING).description("결과 메시지"),
                    fieldWithPath("data").type(JsonFieldType.BOOLEAN).description("결과 데이터")
                )
            ));
        verify(loginApplicationService).checkIdExists(anyString());
    }

Success Code

빨간색 네모 값 통일 시켜주기!

0개의 댓글