2012-07-30 32 views
7

Ahora escribo el caso de prueba de mi clase. Deseo pasar el parámetro del objeto HttpServletRequest al método de caso de prueba para verificar si el método está funcionando o no. Entonces cualquiera me da la sugerencia para eso.¿Cómo paso el objeto HttpServletRequest al caso de prueba?

public void testCheckBatchExecutionSchedule() throws Exception 
    { 
     assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request)); 
    } 

Respuesta

4

HttpServletRequest es una interfaz. En el pasado, simplemente creé una clase (como TestHttpServletRequest) que tenía un cuerpo de método vacío para cada método en HttpServletRequest, excepto los que realmente necesitaba. Para la mayoría de los métodos, devolví una variable de instancia e incluí un setter para esa variable de instancia para que el caso de prueba pueda definir qué devolver. HttpServletRequest tiene muchos métodos, pero la mayoría de los IDE (yo uso Eclipse) pueden generar los stubs del método.

El problema con HttpServletRequestWrapper es que todavía se necesita otro HttpServletRequest para pasar a su constructor para que funcione como el comportamiento predeterminado para cada método. Pasando null resulta en un NullPointerException.

-1

Mediante el uso de la API dada por Tomcat puede obtener HttpServletRequest objeto

HttpServletRequest request = (HttpServletRequest)org.apache.catalina.core.ApplicationFilterChain.getLastServicedRequest(); 

Esto hará que la última solicitud se pasa a un servlet para el mantenimiento del hilo actual.

Esto funciona únicamente en el modo "Estricto cumplimiento del servlet" de Tomcats. Para activarlo Añadir siguiente parámetro JVM:

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true 
10

debe burlarse de la solicitud objeto utilizando una biblioteca de burla, como http://code.google.com/p/mockito/

public void testCheckBatchExecutionSchedule() throws Exception 
{ 
    HttpServletRequest mockRequest = mock(HttpServletRequest.class); 
    //setup the behaviour here (or do it in setup method or something) 
    when(mockRequest.getParameter("parameterName")).thenReturn("someValue"); 
    assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(mockRequest)); 
} 
22

resorte proporciona una clase llamada MockHttpServletRequest, que se puede utilizar para probar el código que necesita una HttpServletRequest.

public void testCheckBatchExecutionSchedule() throws Exception 
{ 
    MockHttpServletRequest request = new MockHttpServletRequest(); 
    request.addParameter("parameterName", "someValue"); 
    assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request)); 
} 
+0

que he encontrado otras se burla de esta clase en línea y esta es la solo uno que incluye una lógica que funciona de manera similar a la clase original. Por ejemplo, 'getRequestURL()' en realidad ensambla una URL de los otros atributos, no solo regurgita lo que se ha especificado con 'setRequestURL()' o un constructor. –

0

actualizado en febrero 2018: OpenBrace Limited has closed down, y su producto ObMimic ya no es compatible.

También puede utilizar el ObMimic biblioteca de Servlet API de prueba-dobles:

import com.openbrace.obmimic.mimic.servlet.http.HttpServletRequestMimic; 

public void testCheckBatchExecutionSchedule() throws Exception 
{ 
    HttpServletRequestMimic request = new HttpServletRequestMimic(); 
    // Configure the request as necessary... 
    // e.g. request.getMimicState().getRequestParameters().set("name", "value"); 
    assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request)); 
} 

Para configurar la solicitud, la HttpServletRequestMimic tiene un método getMimicState() que devuelve un HttpServletRequestState a través del cual todos los detalles relevantes de la solicitud se puede configurar (y mediante el cual se puede acceder a cualquier ServletContext asociado, HttpSession, etc. y configurarlos de manera similar si es necesario). La documentación para el HttpServletRequestState incluye un summary de sus propiedades y métodos, así como un detalle completo de Javadoc.

Tenga en cuenta que:

  • ObMimic también ofrece clases "imitan" similares para HttpServletResponse, ServletContext, HttpSession, ServletConfig etc.

  • Un libre "Community Edition" de ObMimic está disponible en el sitio web del download página.

  • La única biblioteca que necesita agregar a su proyecto para esto es /lib/obmimic.jar de ObMimic (suponiendo que la API de Servlet ya está presente).

  • La página web ObMimic proporciona documentación completa, incluyendo una guía Getting Started, un conjunto de guías con How To ejemplo de código, etc. detalladas Javadoc

Cuestiones relacionadas