- UserCreateRequestDto.java
@Getter
@Builder
public class UserCreateRequestDto {
private String email;
private String nickname;
private String password;
public User toEntity() {
return User.builder()
.email(email)
.nickname(nickname)
.password(password)
.build();
}
}
- UserControllerTest.java
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Autowired
private UserRepository userRepository;
@AfterEach
public void tearDown() throws Exception {
userRepository.deleteAll();
}
@Test
public void user_저장() throws Exception {
//given
String email = "slfkak@gamil.com";
String nickname= "lifeisegg";
String password = "mypassword";
UserCreateRequestDto requestDto = UserCreateRequestDto.builder()
.email(email)
.nickname(nickname)
.password(password)
.build();
String url = "http://localhost:"+port+"/user/register";
// when
ResponseEntity<UserResponseDto> responseEntity = restTemplate
.postForEntity(url,requestDto,UserResponseDto.class);
// userController.createUser(requestDto);
//then
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
User user = userRepository.findByEmail(email);
assertThat(user.getNickname()).isEqualTo(nickname);
}
}
계속 테스트를 해봐도 계속 HttpStatus가 500대의 internal server error가 떴었는데,
다음과 같이 Dto를 바꾸니까 해결이 되었다.
@Getter
@NoArgsConstructor
public class UserCreateRequestDto {
private String email;
private String nickname;
private String password;
@Builder
public UserCreateRequestDto(String email, String nickname, String password) {
this.email=email;
this.nickname=nickname;
this.password= password;
}
public User toEntity() {
return User.builder()
.email(email)
.nickname(nickname)
.password(password)
.build();
}
}
📝 알게된 점
- JPA 에서는 프록시 생성을 위해 기본 생성자를 반드시 생성하여야 한다.
-> @NoArgsConstructor : 기본 생성자 자동 생성
'Project > FromBookToBook' 카테고리의 다른 글
[FBTB] 3. 로그인 기능 구현 (with Oauth2) (0) | 2022.04.07 |
---|---|
[FBTB] 2. 독후감 목록 기능 구현 (0) | 2022.04.01 |
[FBTB] 1. 독후감 작성 기능 구현 (0) | 2022.03.30 |
[Error] PostControllerTest 중 에러 (0) | 2022.03.29 |
spring - react , 백엔드-프론트엔드 연동하기 연습 (0) | 2022.03.27 |