Diferencia entre revisiones de «Mock de un WS mediante Spring WS»
Línea 17: | Línea 17: | ||
<code java> | <code java> | ||
@RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||
− | |||
− | |||
+ | // indicamos a Spring que levante los archivos de configuración que veremos más adelante | ||
+ | @ContextConfiguration("spring-configuration.xml") | ||
+ | public class ClienteIntegracionTest { | ||
+ | |||
+ | // Creamos el request a enviarle al WS | ||
private String request = "<ns2:UserProfileCreateRequest xmlns:ns2='http://shekhar.com/usermanagement/schemas'> Shekhar Gulati 27 "; | private String request = "<ns2:UserProfileCreateRequest xmlns:ns2='http://shekhar.com/usermanagement/schemas'> Shekhar Gulati 27 "; | ||
+ | |||
+ | // Creamos el response que nos responderá el WS | ||
private String response = "<ns2:UserProfileCreateResponse xmlns:ns2='http://shekhar.com/usermanagement/schemas'> user created successfully "; | private String response = "<ns2:UserProfileCreateResponse xmlns:ns2='http://shekhar.com/usermanagement/schemas'> user created successfully "; | ||
+ | //Inyectamos el WebServiceTemplate | ||
@Autowired | @Autowired | ||
private WebServiceTemplate webServiceTemplate; | private WebServiceTemplate webServiceTemplate; | ||
+ | |||
+ | // Mockeamos el WebServiceServer | ||
private MockWebServiceServer server; | private MockWebServiceServer server; | ||
+ | |||
+ | // Clase nuestra que lo consumirá | ||
@Autowired | @Autowired | ||
− | private | + | private Cliente cliente; |
+ | // En el Before levantamos el server pasandole como parámetro al constructor | ||
+ | // el webServiceTemplate | ||
@Before | @Before | ||
public void setup() { | public void setup() { | ||
− | server = MockWebServiceServer.createServer(webServiceTemplate); | + | server = MockWebServiceServer.createServer(webServiceTemplate); |
} | } | ||
@Test | @Test | ||
− | public void | + | public void testInvocacionWs() { |
− | server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response))); | + | |
− | + | // Le damos comportamiento a nuestro WS con el request y el response | |
− | server.verify(); | + | // antes configurado |
+ | server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response))); | ||
+ | |||
+ | cliente.invocarMetodoQueLlamaAlWs(); | ||
+ | |||
+ | // Nos aseguramos que el servicio fue invocado | ||
+ | server.verify(); | ||
} | } | ||
Línea 44: | Línea 62: | ||
</code> | </code> | ||
− | ====Fuente | + | ====Fuente==== |
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ] | *[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ] |
Revisión del 17:23 29 mar 2012
Contenido
Introducción
En esta página explicaremos de qué forma podemos simular el entorno de un WS en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.
Requerimientos
Para mockear un WS mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:
- jaxb-api-2.0.jar
- jaxb-impl-2.0.3.jar
- xalan-2.7.1.jar (importante que sea esta versión o superior)
- xmlunit-1.1.jar
Ejemplo
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:
@RunWith(SpringJUnit4ClassRunner.class)
// indicamos a Spring que levante los archivos de configuración que veremos más adelante @ContextConfiguration("spring-configuration.xml") public class ClienteIntegracionTest {
// Creamos el request a enviarle al WS private String request = "<ns2:UserProfileCreateRequest xmlns:ns2='http://shekhar.com/usermanagement/schemas'> Shekhar Gulati 27 ";
// Creamos el response que nos responderá el WS private String response = "<ns2:UserProfileCreateResponse xmlns:ns2='http://shekhar.com/usermanagement/schemas'> user created successfully ";
//Inyectamos el WebServiceTemplate @Autowired private WebServiceTemplate webServiceTemplate;
// Mockeamos el WebServiceServer private MockWebServiceServer server;
// Clase nuestra que lo consumirá @Autowired private Cliente cliente;
// En el Before levantamos el server pasandole como parámetro al constructor // el webServiceTemplate @Before public void setup() { server = MockWebServiceServer.createServer(webServiceTemplate); }
@Test public void testInvocacionWs() {
// Le damos comportamiento a nuestro WS con el request y el response // antes configurado server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));
cliente.invocarMetodoQueLlamaAlWs();
// Nos aseguramos que el servicio fue invocado server.verify(); }
}