Saltar al contenido

Mockito when().thenReturn llama al método innecesariamente

Posterior a investigar con expertos en la materia, programadores de diversas áreas y maestros dimos con la solución al problema y la plasmamos en esta publicación.

Solución:

Mockito no puede burlarse static método. Su cheque cuando no es válido:

  when(BasketHelper.getAction(request)).thenReturn(0);
  when(BasketHelper.getActionProduct(site, request)).thenReturn(product);

Esa es otra razón por la que queremos reducir el uso de static método ya que es difícil de burlar.

No hay manera más fácil de burlarse del comportamiento si su clase permanece así. Sin embargo, si desea cambiar su diseño y hacer que ambos métodos no seanstatic. La forma correcta de usar “cuando” es aplicar la verificación en el objeto simulado. Por ejemplo:

  BasketHelper basketHelper = mock(BasketHelper.class);
  when(basketHelper.getAction(request)).thenReturn(0);
  when(basketHelper.getActionProduct(site, request)).thenReturn(product);

Pero una vez más, esto solo funciona si rediseñó el método getAction y getProduct de su clase para que sea NO ESTÁTICO.

Recuerdo que hay algún otro marco de prueba que admite la burla static método.

Si entiendes que ha sido de ayuda nuestro post, agradeceríamos que lo compartas con otros entusiastas de la programación de este modo contrubuyes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *