El objetivo de un Test unitario es probar la responsabilidad de una clase/componente pero normalmente una clase se relaciona con otras clases que deben ser instancionadas y funcionar correctamente (en un contexto Web necesitamos acceso a la sesión, request,…)

En muchos casos para simplificar el test unitario y controlar todos los aspectos es muy útil reemplazar los objetos que colaboran con dobles.

Estos dobles pueden ser de varios tipos:

· Dummy : es un objeto vacío (normalmente se usa solo para la compilación)

· Fake: es un objeto que tienen una implementación functional simplificada solo para cumplir el test (como una base de datos en memoria)

· Stub: un objeto con comportamiento codificado para un test o grupos de tests

· Mock: un objeto que tiene el comportamiento esperado para el component que suplanta y verifica las interacciones en su ciclo de vida

· Spy : un mock creado como proxy a un objeto real de modo que algunos métodos puedan set stubeados.

Mockito (además de ser la bebida preferida de Jesús, juor,juor) es un framework de Mocks muy útil para crear mocks y espías de forma sencilla y potente.

Para usar Mockito en nuestro proyecto simplemente añadiré la dependencia Maven:

Mockito puede usarse de dos formas:

1) Con el método estático mock

2) Con la anotación @Mock (en este caso nuestro runner JUnit debe ser MockitoJUnit4Runner)

Cómo funciona Mockito

Con los métodos Mockito.when() y thenReturn() Mockito nos permite decidir cómo debe comportarse el Mock:

Veamos un ejemplo sencillo:

Mockito ofrece estos métodos then:

Mockito ofrece estos comportamientos:

Podéis seguir conociendo Mockito en su documentación y bien con este libro:

(link)