Diferencia entre revisiones de «Inyeccion De Mocks De Mockito Con Spring»
Línea 2: | Línea 2: | ||
Luego, en la clase de test, pueden recuperarse con la anotación @Autowired para programarles comportamiento. | Luego, en la clase de test, pueden recuperarse con la anotación @Autowired para programarles comportamiento. | ||
+ | |||
+ | |||
+ | ==Ejemplo== | ||
+ | |||
+ | Suponiendo un DAO con interface BlahDao e implementacion BlahDaoImpl del cual se quiere inyectar una maqueta (mock) en el BO BlehBo para su test de componentes, la configuración de spring sería la siguiente: | ||
<code xml> | <code xml> | ||
<beans> | <beans> | ||
... | ... | ||
− | <bean id="dao.BlahDao" class="" factory-method=""> | + | <bean id="dao.BlahDao" class="org.mockito.Mockito" factory-method="mock"> |
<constructor-arg type="java.lang.Class" value="com.dosideas.bleh.dao" /> | <constructor-arg type="java.lang.Class" value="com.dosideas.bleh.dao" /> | ||
</bean> | </bean> | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | Hay que notar que: | ||
+ | * En el lugar donde iría el nombre de la implementación de BlahDao, va el nombre de la clase fábrica, en este caso es la clase Mockito que crea los mocks. | ||
+ | * El atributo factory-method indica el método capaz de devolver instancias del bean que se desea crear, en este caso el método corresponde a la clase Mockito y es el que se utiliza para crear los mocks. | ||
+ | * Se pasa como argumento la clase que se desea maquetar. | ||
+ | Donde "factory-method" es el método estático del objeto capaz de devolver instancias del bean a crear. | ||
+ | |||
+ | La utilización de Mockito en forma programática sería: | ||
+ | <code java> | ||
+ | ... | ||
+ | import org.mockito.Mockito; | ||
+ | ... | ||
+ | BlahDao blahDaoMock = Mockito.mock(BlahDao.class); | ||
+ | ... | ||
</code> | </code> | ||
+ | |||
+ | Desde la clase de test se puede recuperar la instancia de la clase a testear, como siempre y se puede también recuperar la clase maquetada para darle comportamiento y realizar verificaciones: | ||
<code java> | <code java> | ||
Línea 29: | Línea 52: | ||
.when(blahDaoMock) | .when(blahDaoMock) | ||
.guardar(any(BlahEntity.class)); | .guardar(any(BlahEntity.class)); | ||
+ | } | ||
+ | |||
+ | @Test | ||
+ | public void test...() { | ||
+ | ... | ||
+ | verify(blahDaoMock).guardar(any(BlahEntity.class)); | ||
+ | ... | ||
} | } | ||
Revisión del 17:28 5 oct 2009
Es posible inyectar a través de Static Factory Method instancias de objetos Mock de Mockito con Spring directamente desde el archivo de configuración.
Luego, en la clase de test, pueden recuperarse con la anotación @Autowired para programarles comportamiento.
Ejemplo
Suponiendo un DAO con interface BlahDao e implementacion BlahDaoImpl del cual se quiere inyectar una maqueta (mock) en el BO BlehBo para su test de componentes, la configuración de spring sería la siguiente:
<beans>
... <bean id="dao.BlahDao" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg type="java.lang.Class" value="com.dosideas.bleh.dao" /> </bean> ...
Hay que notar que:
- En el lugar donde iría el nombre de la implementación de BlahDao, va el nombre de la clase fábrica, en este caso es la clase Mockito que crea los mocks.
- El atributo factory-method indica el método capaz de devolver instancias del bean que se desea crear, en este caso el método corresponde a la clase Mockito y es el que se utiliza para crear los mocks.
- Se pasa como argumento la clase que se desea maquetar.
Donde "factory-method" es el método estático del objeto capaz de devolver instancias del bean a crear.
La utilización de Mockito en forma programática sería:
...
import org.mockito.Mockito;
... BlahDao blahDaoMock = Mockito.mock(BlahDao.class); ...
Desde la clase de test se puede recuperar la instancia de la clase a testear, como siempre y se puede también recuperar la clase maquetada para darle comportamiento y realizar verificaciones:
public class BlehBoComponenteTest {
@Autowired private BlehBo instance;
@Autowired private BlahDao blahDaoMock;
@Before public void setUp() { //init mocks MockitoAnnotations.initMocks(this);
//blahDaoMock doReturn(5) .when(blahDaoMock) .guardar(any(BlahEntity.class)); }
@Test public void test...() { ... verify(blahDaoMock).guardar(any(BlahEntity.class)); ... }
}