Skip to content

Spring: Crear un Mock de un Bean desde los ficheros XML de Contexto

17 enero 2015

SpringSource

El otro día, haciendo unos tests de integración con Spring para un servicio REST, me encontré con la necesidad de inyectar una dependencia en un servicio que fuera un objeto Mock, al que pudiera modelar el comportamiento. Necesitaba que el test de integración probara todas las llamadas necesarias sobre mi servicio, pero no me interesaba que la dependencia que tenía inyectada mi servicio con @Autowired hiciera llamadas reales, ya que en este caso eran contra APIs terceras con cuota de pago.

Por tanto, como en mis tests unitarios suelo utilizar Mockito, se me ocurrió que podría inyectar la dependencia para llamar a APIs terceras en forma de Mock, de modo que las llamadas reales nunca se hagan en los tests. Por tanto, quería mostraos cómo crear un Bean desde vuestros contextos XML, que fueran mocks con Mockito.

Cuando creamos un Mock con Mockito desde código (sin utilizar sus anotaciones) hacemos algo como lo siguiente:

MyService myService = Mockito.mock(MyService.class)

Por tanto para hacer esto mismo desde nuestro contexto en XML, haríamos:

<!-- Mocked Beans -->
<bean id="myService" class="org.mockito.Mockito" factory-method="mock">
   <constructor-arg name="classToMock" value="com.service.MyService"/>
</bean>

Lo siguiente a tener en cuenta, es que probablemente tengamos una etiqueta de tipo <context:component-scan/> para escanear automáticamente nuestros Beans y como este Bean Mockeado de MyService lo estamos creando manualmente, tenemos que decirle a Spring, que no es necesario que lo escanee él, que ya lo creamos nosotros. Para ello utilizamos los exclude-filter:

<!-- Scans all the Service Beans, except the ones we need to mock-->
<context:component-scan base-package="com.service">
   <context:exclude-filter type="assignable" expression="com.service.MyService"/>
</context:component-scan>

Si tenéis cualquier duda, sugerencia, mejora, … Será siempre bien recibida 😉

Más Info:

The IoC Container | http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html

Libros de Referencia:

Spring.Tercera Edición (Anaya Multimedia/Manning)(Amazon.es)

Anuncios
No comments yet

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: