@Test
public void joinUser(){
//given
User user1=new User();
user1.setUsername("spring00");
user1.setEmail("abc@naver.com");
user1.setEnabled(true);
user1.setName("스프링");
user1.setPassword("lovespring00!");
user1.setPhone("01012345678");
user1.setRoles(new ArrayList<Role>());
// when
userService.joinUser(user1);
// then
User findUser=userRepository.findById(user1.getId()).get(); // 에러가 발생한 부분
assertThat(user1.getName()).isEqualTo(findUser.getName());
assertThat(user1.getUsername()).isEqualTo(findUser.getUsername());
assertThat(user1.getPassword()).isEqualTo(findUser.getPassword());
assertThat(user1.getEmail()).isEqualTo(findUser.getEmail());
assertThat(user1.getPhone()).isEqualTo(findUser.getPhone());
}
org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!
user1.getId()에서 발생함
userRequestDto 타입을 받아서 회원가입
UserService단에서 데이터베이스에 저장하기 전에 toEntity() 메소드로 User 타입으로 변환
즉, User 타입 객체가 필요하다.
✨ 해결
User user=userRequestDto.toEntity();
userService.joinUser(user);
컨트롤러에서는 toEntity 메소드를 이용해 UserRequestDto에서 User로 변경해서 joinUser 메소드에 보냈다.
반응형
'Framework > Spring Boot' 카테고리의 다른 글
개인정보 수정 (0) | 2022.02.05 |
---|---|
@DataJpaTest와 @SpringBootTest (0) | 2022.02.02 |
[Error] 아이디 중복 체크 (0) | 2021.12.18 |
Spring Security 사용자 id 가져오기 (0) | 2021.11.25 |
[ERROR] EL1004E: Method call: Method hasError(java.lang.String) cannot be found on type org.thymeleaf.spring5.expression.Fields (0) | 2021.11.25 |