백엔드에서 회원가입 유효성 검사를 진행하기 위해 테스트를 작성하는데 해결이 되지 않는 문제가 있었다.
이름을 입력하지 않았을 때 오류 메시지가 잘 나오는지 테스트를 하는데 이름을 빈칸으로 하고 테스트를 해도 테스트가 통과가 되지 않는 상황이였다.
문제 상황
회원가입 시 이름을 입력하는데 빈칸이면 안되고 3~7글자 사이의 한글만 입력해야 하기 때문에 스프링의 @Valid어노테이션을 이용해 아래 같이 Dto클래스에서 유효성 검사를 진행했다.
그리고 이름이 빈칸일 때 테스트를 진행하는데 이름이 빈칸이면 "이름을 입력해주세요"라는 메시지가 나오게 했지만 밑에 오류 메시지를 보면 "이름을 다시 확인해주세요"라는 다른 조건(3~7글자 사이의 한글만 입력)이 틀렸을 때의 메시지가 나왔다.
그래서 @NotBlank와 @Pattern을 같이 쓰는 게 영향이 있는 건가 싶어서 @Pattern 어노테이션을 주석 처리하고 테스트를 실행했더니 아주 잘 통과가 되었다.
일단은 문제 상황이 @Pattern 어노테이션의 문제로 좁혀진 상황이다.
@Pattern의 정규식은 리액트 useForm에서 사용하던 정규식을 그대로 가져왔기 때문에 문제가 없을 거라고 생각을 했었다.
만약에 정규식에 문제가 있었으면 리액트에서 사용했을 때 문제가 있었어야 했는데 문제가 없었기 때문이다.
뭐가 문제인지 혼자서는 도저히 못 찾겠어서 동료에게 도움을 요청해 같이 문제를 파악하는데 믿었던 정규식에 문제가 있다는 것을 깨달았다.
/^[ㄱ-ㅎ|가-힣]{3,7}$/
위에 코드가 리액트에서 쓰던 정규식인데 정규식을 감싸는 '/'를 자바에서는 빼주고 사용을 해야 했는데 그대로 가져다 쓰다 보니까 '/'까지 같이 들어가 버려서 정규식에서 문제가 발생했었다.
"^[ㄱ-ㅎ|가-힣]{3,7}$"
자바에서는 정규식을 쓸 때는 위 코드와 같이 '/'를 빼고 사용을 해야 한다는 누군가에게는 당연한 사실이지만 나는 몰랐던 사실을 오늘도 하나 배웠다.
'성장이야기 > TIL' 카테고리의 다른 글
221013 TIL @RequestBody vs @ModelAttribute (1) | 2022.10.13 |
---|---|
221012 TIL 내 서비스는 믿을만한가? (0) | 2022.10.12 |
221010 TIL 자바스크립트 실력 높이기 (0) | 2022.10.10 |
221009 TIL 로그인이 된 줄 알았지.. (0) | 2022.10.09 |
221008 TIL 호이스팅(hoisting)이란? (0) | 2022.10.08 |