URL 문자열에서 모의 HttpServletRequest 만들기?
특히 request.getParameterMap 및 request.getParameter를 사용하여 개체를 생성하는 HttpServletRequest 개체에서 일부 작업을 수행하는 서비스가 있습니다.
제공된 URL을 문자열 형식으로 가져 오는 간단한 방법이 있는지 궁금합니다.
String url = "http://www.example.com/?param1=value1¶m";
단위 테스트로 테스트 할 수 있도록 HttpServletRequest 객체로 쉽게 변환 할 수 있습니까? 아니면 적어도 request.getParameterMap 및 request.getParameter가 올바르게 작동하도록?
Spring은 spring-test 모듈에 MockHttpServletRequest 를 가지고 있습니다.
maven을 사용하는 경우 pom.xml에 적절한 종속성을 추가해야 할 수 있습니다 . mvnrepository.com 에서 spring-test를 찾을 수 있습니다 .
조롱하는 가장 간단한 방법 HttpServletRequest
:
익명의 하위 클래스를 만듭니다.
HttpServletRequest mock = new HttpServletRequest () { private final Map<String, String[]> params = /* whatever */ public Map<String, String[]> getParameterMap() { return params; } public String getParameter(String name) { String[] matches = params.get(name); if (matches == null || matches.length == 0) return null; return matches[0]; } // TODO *many* methods to implement here };
사용 jMock , Mockito , 또는 다른 범용 조롱 프레임 워크 :
HttpServletRequest mock = context.mock(HttpServletRequest.class); // jMock HttpServletRequest mock2 = Mockito.mock(HttpServletRequest.class); // Mockito
HttpUnit의 ServletUnit을 사용 하고 요청을 전혀 모의하지 마십시오.
MockHttpServletRequest를 사용하는 방법은 다음과 같습니다.
// given
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServerName("www.example.com");
request.setRequestURI("/foo");
request.setQueryString("param1=value1¶m");
// when
String url = request.getRequestURL() + '?' + request.getQueryString(); // assuming there is always queryString.
// then
assertThat(url, is("http://www.example.com:80/foo?param1=value1¶m"));
일반적으로 서비스에 실제로 연결되는 통합 테스트에서 이러한 종류의 것들을 테스트합니다. 단위 테스트를 수행하려면 서블릿의 doGet / doPost 메소드에서 사용하는 객체를 테스트해야합니다.
일반적으로 서블릿 메소드에 많은 코드를 갖고 싶지는 않습니다. 작업을 처리하고 서블릿 API 객체가 아닌 자신의 객체를 전달하는 빈 클래스를 만들고 싶을 것입니다.
참고 URL : https://stackoverflow.com/questions/6455359/creating-a-mock-httpservletrequest-out-of-a-url-string
'Programing' 카테고리의 다른 글
Content-Type multipart / form-data를 사용하는 POST 데이터 (0) | 2020.12.08 |
---|---|
Xmpp 대 Websocket (0) | 2020.12.08 |
PowerMock을 사용하여 테스트를위한 비공개 방법을 모의하는 방법은 무엇입니까? (0) | 2020.12.08 |
OpenSSL 확인 반환 코드 : 20 (로컬 발급자 인증서를 가져올 수 없음) (0) | 2020.12.08 |
CSS div 교체 색상 (0) | 2020.12.08 |