protocol = http host = null, 컨트롤러 테스트 오류, Controller Test Error, java.lang.IllegalArgumentException
@Test
@Transactional
public void findTest(){
//Given
String url="http:localhost:"+port+"/search/cocktail/?inputStr";
//when
ResponseEntity<BaseResponse> responseEntity=testRestTemplate.exchange(url, HttpMethod.GET, null, BaseResponse.class);
//then
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getBody().getIsSuccess()).isTrue();
assertThat(responseEntity.getBody().getMessage()).isEqualTo("요청에 성공하였습니다.");
}
위와 코드는 Controller
로 요청을 보내면, 내가 보낸 요청이 응답받는데 성공하는지 테스트하고, 응답 코드가 내가 구현한 것과 일치하는지 테스트하는 테스트 코드이다. 하지만 글 맨 아래에 첨부한 오류가 발생했다. 원인을 파악하고 해결책을 찾고자 protocol = http host = null
을 검색했는데 StackOverflow
에 원인과 해결책이 바로 나왔다.
- https://stackoverflow.com/questions/25642104/java-lang-illegalargumentexception-protocol-http-host-null
String url
에서"http:"
가 아니라http://
로 해야 오류가 발생하지 않는다.
@Test
@Transactional
public void findTest(){
//Given
String url="http://localhost:"+port+"/search/cocktail/?inputStr";
//when
ResponseEntity<BaseResponse> responseEntity=testRestTemplate.exchange(url, HttpMethod.GET, null, BaseResponse.class);
//then
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getBody().getIsSuccess()).isTrue();
assertThat(responseEntity.getBody().getMessage()).isEqualTo("요청에 성공하였습니다.");
}
코드를 위와 같이 수정하고 나니까 오류가 해결됐다.
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/HttpEntity.html
"http:"
가 아니라 http://
로 해야 하는 이유를 더 자세히 찾아봤다. URL을 비교할 때 내가 요청을 보낸 String url
과 Controller
의 URL을 equals()
로 비교한다. Controller
의 URL은 http://~~~
이기 때문에 요청을 보낼 때"http:"
가 아니라 http://
로 정확히 해야 한다.
protocol = http host = null
java.lang.IllegalArgumentException: protocol = http host = null
Author And Source
이 문제에 관하여(protocol = http host = null, 컨트롤러 테스트 오류, Controller Test Error, java.lang.IllegalArgumentException), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mbsik6082/protocol-http-host-null-컨트롤러-테스트-오류-Controller-Test-Error-java.lang.IllegalArgumentException저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)