반응형
Mock으로 테스트 하는게 아니라 RestTemplate로 localhost를 테스트 한다는 것은 서버가 임시로 떠있고 API를 호출한다는 의미다. 즉 웹서버가 떠 있어야 한다는 의민대 @SpringBootTest를 쓴다면 웹서버를 띄우는 것이 아니라 테스트에 필요한 것들을 실행하기 위해 프레임워크를 해석하는 것이다.
때문에 포트가 명시적으로 할당되 URL을 호출해야 하지만 떠있는 웹서버가 없기 때문에 다음의 에러가 발생하는 것이다.
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:8080/oauth/token": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused) |
그래서 http://localhost:8080 부분을 빼려고 하니 다음 에러가 발생한다.
ResponseEntity<String> response = restTemplate.postForEntity("/oauth/token", request, String.class);
java.lang.IllegalArgumentException: URI is not absolute ... |
그래서 실행할 때 임의의 포트를 할당하도록 설정, 그리고 그 포트를 가져와 localhost:[포트번호]를 입력해 호출해야 한다.
우선 테스트에 등록한 @SpringBootTest에 설정을 추가한다.
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
class TestApi {
...
}
그리고 랜덤으로 호출된 포트번호를 다음 어노테이션을 이용해 주입받는다
@LocalServerPort
int randomServerPort;
다시 처음처럼 수정하여 호출하자
ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:"+randomServerPort+"/oauth/token", request, String.class);
끝.
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[querydsl] group by 쿼리만들기 (0) | 2020.12.18 |
---|---|
[gitlab] root 비밀번호 분실 시 비밀번호 초기화 (0) | 2020.12.16 |
[react + next] 구글 애널리틱스 적용하기(gtag) (0) | 2020.12.13 |
[jpa] 로그 설정(logging 설정 외 p6spy로 하기) (0) | 2020.11.27 |
[react] next.js 프로젝트, npm으로 설정하기 (0) | 2020.11.26 |
댓글