Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- table not found
- Value too long for column
- 달인막창
- 겨울 부산
- kotlin
- vfr video
- addhooks
- preemption #
- pytest
- VARCHAR (1)
- Spring Batch
- tolerated
- PersistenceContext
- 코루틴 컨텍스트
- 자원부족
- 깡돼후
- PytestPluginManager
- 개성국밥
- 코루틴 빌더
- JanusGateway
- python
- taint
- JanusWebRTCServer
- 티스토리챌린지
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- terminal
- 오블완
- JanusWebRTC
- JanusWebRTCGateway
- mp4fpsmod
Archives
너와 나의 스토리
[SpringBoot] RestTemplate Test Code - Exception handling 테스트 본문
개발/Spring Boot
[SpringBoot] RestTemplate Test Code - Exception handling 테스트
노는게제일좋아! 2022. 6. 2. 13:05반응형
RestTemplate Exception Handling 방법
통신 및 error handling 코드
- RestTemplate으로 통신 및 Error handling
@RequiredArgsConstructor
public class RestApi {
private final RestTemplate restTemplate;
public User getUser() {
restTemplate.setErrorHandler(new RestTemplateResponseErrorHandler());
try {
ResponseEntity<User> response = restTemplate.exchange(
"https://server-url-to-send-user-info",
HttpMethod.GET,
null,
User.class
);
return Objects.requireNonNull(response.getBody());
} catch (HttpClientErrorException e) {
if (e.getStatusCode() == HttpStatus.PRECONDITION_FAILED) {
throw new CustomException1("조회할 수 없는 사용자입니다.");
} else if (e.getStatusCode() == HttpStatus.NOT_IMPLEMENTED) {
throw new CustomException2("아직 구현되어 있지 않습니다.");
}
throw e;
}
}
}
public class User {
public String name;
public Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
}
Test Code
- RestTemplate을 mocking
- RestApi에서 RestTemplate을 생성자 주입해야지 mocking한 RestTemplate을 사용할 수 있다.
- Exception Handling 테스트
@Test
void shouldThrowCustomException1() {
// Given
String url = "https://server-url-to-send-user-info";
// When
when(restTemplate.exchange(url, HttpMethod.GET, null, User.class))
.thenThrow(new HttpClientErrorException(HttpStatus.NOT_IMPLEMENTED));
// Then
assertThrows(CustomException2.class, () -> sut.getUser());
}
- 정상적으로 데이터를 받는지 테스트
@Test
void shouldGetUser() {
// Given
String url = "https://server-url-to-send-user-info";
User user = new User("name", 0);
// When
when(restTemplate.exchange(url, HttpMethod.GET, null, User.class))
.thenReturn(new ResponseEntity<>(user, HttpStatus.OK));
User response = sut.getUser();
// Then
assertEquals("name", response.name);
assertEquals(0, response.age);
}
반응형
'개발 > Spring Boot' 카테고리의 다른 글
Comments