java junit easymock
puede descargar las definiciones de todos los objetos ficticios

java - ¿Cómo burlarse del HttpServletRequest?



easymock maven (5)

Eche un vistazo a Mockrunner: http://mockrunner.sourceforge.net/

Tiene muchos simulacros de Java EE fáciles de usar, incluidos HttpServletRequest y HttpServletResponse.

Esta pregunta ya tiene una respuesta aquí:

Tengo una función que busca un parámetro de consulta y devuelve un booleano:

public static Boolean getBooleanFromRequest(HttpServletRequest request, String key) { Boolean keyValue = false; if(request.getParameter(key) != null) { String value = request.getParameter(key); if(keyValue == null) { keyValue = false; } else { if(value.equalsIgnoreCase("true") || value.equalsIgnoreCase("1")) { keyValue = true; } } } return keyValue; }

Tengo tanto junit como easymock en mi pom.xml, ¿cómo hago para burlarme del HttpServletRequest?



HttpServletRequest es muy similar a cualquier otra interfaz, por lo que puede imitarse siguiendo el archivo Léame de EasyMock.

Aquí hay un ejemplo de cómo hacer una prueba unitaria de su método getBooleanFromRequest

// static import allows for more concise code (createMock etc.) import static org.easymock.EasyMock.*; // other imports omitted public class MyServletMock { @Test public void test1() { // Step 1 - create the mock object HttpServletRequest req = createMock(HttpServletRequest.class); // Step 2 - record the expected behavior // to test true, expect to be called with "param1" and if so return true // Note that the method under test calls getParameter twice (really // necessary?) so we must relax the restriction and program the mock // to allow this call either once or twice expect(req.getParameter("param1")).andReturn("true").times(1, 2); // program the mock to return false for param2 expect(req.getParameter("param2")).andReturn("false").times(1, 2); // switch the mock to replay state replay(req); // now run the test. The method will call getParameter twice Boolean bool1 = getBooleanFromRequest(req, "param1"); assertTrue(bool1); Boolean bool2 = getBooleanFromRequest(req, "param2"); assertFalse(bool2); // call one more time to watch test fail, just to liven things up // call was not programmed in the record phase so test blows up getBooleanFromRequest(req, "bogus"); } }


No sé acerca de easymock, pero el libro ''Pruebas unitarias en Java: Cómo las pruebas impulsan el código'' de Johannes Link contenía explicaciones sobre cómo probar los Servlets utilizando una biblioteca que construyó con objetos ficticios.

El sitio complementario para el libro ya no existe (cambio en la editorial de algo ...) pero el sitio complementario de la publicación alemana original aún está en marcha . Desde él, puede descargar las definiciones de todos los objetos ficticios .


Use algún marco de burla, por ejemplo, Mockito o JMock que viene con la capacidad de burla de tales objetos.

En Mockito, puedes hacer burlas como:

HttpServletRequest mockedRequest = Mockito.mock(HttpServletRequest.class);

Para detalles sobre Mockito, vea: ¿Cómo lo bebo? en el sitio de Mockito.

En JMock, puedes hacer burlas como:

Mockery context = new Mockery(); HttpServletRequest mockedRequest = context.mock(HttpServletRequest.class);

Para obtener más información sobre jMock, consulte: jMock - Primeros pasos