[해결완료] 로그인 인증 테스트코드 작성 질문입니다
1003
13 câu hỏi đã được viết
안녕하세요 호돌맨 선생님!
세션토큰 발급기능 추가를 초반에 보다가 로그인 관련 테스트를 직접 작성해보라고 하셔서 해봤는데 궁금한 점이 있어서 질문드립니다!
작성한코드
@Test
@DisplayName("인증 테스트")
void test11() throws Exception {
// given
Member member = Member.builder()
.email("abc@naver.com")
.password("1234")
.build();
// UserRepository를 MemeberRepository로 이름 변경 했습니다.
memberRepository.save(member);
Login login = Login.builder()
.email("abc@naver.com")
.password("1234")
.build();
String json = objectMapper.writeValueAsString(login);
// expected
mockMvc.perform(post("/auth/login")
.contentType(APPLICATION_JSON)
.content(json)
)
.andExpect(status().isOk())
.andDo(print());
결과
query did not return a unique result: 2; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 2
원인
JPA 에러라는 것을 검색을 통해서 알았습니다
해결 방법 블로그 주소 : https://wakestand.tistory.com/943
UserRepository에 작성한 findByEmailAndPassWord 메서드가 Optional로 되어 있는데 이 부분을 List로 변경해야할 것 같아서 다음과 같이 변경했습니다
변경된 코드
UserRepository
public interface MemberRepository extends CrudRepository<Member, Long> {
List<Member> findByEmailAndPassword(String email, String password);
}AuthService
@Service
@RequiredArgsConstructor
public class AuthService {
private final MemberRepository memberRepository;
public List<Member> signin(Login login) {
List<Member> memberList = Optional.ofNullable(memberRepository.findByEmailAndPassword(login.getEmail(), login.getPassword()))
.orElseThrow(() -> new InvalidSign());
return memberList;
}
}
위 처럼 Optional<Member가 아닌 List<Member>로 변경해서 테스트 로직을 성공하긴했습니다...
질문
UserRepository의 Optional<Member>를 변경하지 않고 테스트 코드를 작성하는 방법이 있을까요??
Optional에서 List로 변경했을 때 문제점은 없을까요?
Câu trả lời 3
1
원인을 찾았습니다 -,.-;
userRepository에 대한 delete.all을 하지 않아서 JPA 쿼리 에러가 뜨는거였네요........
괜한 곳에서 원인을 찾고 있었습니다.....
죄송합니다 선생님 해결했습니다 ㅠ_ㅠ...
0
강의를 쭉 다시 들어보면서 테스트케이스를 돌렸는데요
PostControleerTest에서 인증테스트 메서드를 만들어서 돌렸을 때랑 따로 AuthControllerTest를 만들어서 했을 때랑 결과가 다르게 나오네여 -,-;;;
동일한 테스트케이스 코드인데 결과가 다르다니 뭔가 신기하네여...
Deprecated 관련 사항들
0
100
2
깃헙 collaboator 초대 관련
0
86
1
강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다
0
157
2
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
0
229
1
다중 데이터를 삭제 할 때
0
270
2
querydsl Q class 이슈
0
413
2
Windows WSL Vue 설정
2
246
1
Dip, @transactional
0
187
1
[vite] http proxy error: /auth/login
0
1040
2
로그인 하고 나서 GET요청으로 메인페이지 요청
0
234
2
GitHub Collaborator 초대 관련
0
256
2
Window에서 Vue.js 설정
0
321
2
(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"
0
712
2
collaboator로 초대받을 수 있을까요??
0
283
2
SecurityMockContext 로부터 유저 정보를 가져오기
0
260
1
given 부분이 길어질 때 어떻게 처리하면 좋을까요?
0
317
1
섹션9 프론트의 코드를 보고싶습니다,,,
0
423
1
Spring Security - defaultSuccessUrl 질문
0
624
1
강의 화면이 나오지 않습니다. 음성과 자막만 나와요
0
302
1
JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ
0
689
2
ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상
0
1178
2
섹션10 언제 나오나요?
0
482
1
CommentService에서 Repository를 호출하지 않는데도
0
340
1
Editor....를 활용한 패턴에 질문있습니다.
0
492
1

