protocol = http host = null, 컨트롤러 테스트 오류, Controller Test Error, java.lang.IllegalArgumentException

문법식·2022년 1월 28일
0
@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에 원인과 해결책이 바로 나왔다.

@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("요청에 성공하였습니다.");
    }

코드를 위와 같이 수정하고 나니까 오류가 해결됐다.

"http:"가 아니라 http://로 해야 하는 이유를 더 자세히 찾아봤다. URL을 비교할 때 내가 요청을 보낸 String urlController의 URL을 equals()로 비교한다. Controller의 URL은 http://~~~ 이기 때문에 요청을 보낼 때"http:"가 아니라 http://로 정확히 해야 한다.

protocol = http host = null
java.lang.IllegalArgumentException: protocol = http host = null
profile
백엔드

0개의 댓글