Diferencia entre revisiones de «Inyeccion De Mocks De Mockito Con Spring»

De Dos Ideas.
Saltar a: navegación, buscar
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));
       ...
   }

}

Ver también

Más información