테스트 코드 작성은 이전 프로젝트에 있던 테스트 코드를 참고하여 작성하였다.
닉네임 수정 테스트 코드 작성 후 Strict stubbing argument mismatch
에러가 발생하였다.
이전 프로젝트에 있던 코드와 동일하는데도 왜 이런 문제가 뜨는지 알 수가 없어서 chatGTP에 질문하였더니,
findByUsername()
메소드르 두 번 이상 호출하면서 인자 값이 다른 경우에 발생하는 에러메시지라는 것이였다.
에러메시지가 났던 코드는 아래와 같았다.
given(userRepository.findByUsername(user.getUsername()))
.willReturn(Optional.of(user));
이 부분에서 인자값을 제대로 받지 못해 에러가 발생하고 있었고, chatGTP에서 알려준 해결 방안은 아래와 같았다.
해당 부분을 anyString()
으로 변경하면 목 객체를 생성할 수 있고,
findByUsername 메소드가 어떤 문자열 인자값이 전달되도 Optional.of(user)
를 반환할 수 있다는 것이였다.
given(userRepository.findByUsername(anyString()))
.willReturn(Optional.of(user));
도움을 받아 위와 같이 수정하니 테스트 성공의 녹색이 보였다.
문자열의 인자값을 제대로 받지 못할 때에는 andString()을 사용하게 되면 어떤 문자열 인자값이 들어와도 Optional.of(user)을 반환할 수 있다.