Pregunta

Vamos a decir que tengo una clase

class SomeClass
{
  public void methodA()
  {}

  public void methodB()
  {}

  public void someMethod()
  {
     methodA();
     methodB();
  }
}

Me gustaría comportamiento de la prueba de algunMetodo () con Mockito.

La única manera en que podía pensar es el uso de espionaje ();

Algo así como

SomeClass someClass = spy(new SomeClass());
someClass.someMethod();
InOrder inOrder = inOrder(someClass);
inOrder.verify(someClass).methodA();
inOrder.verify(someClass).methodB();

Soy nuevo en el Mockito y documentación dice

"espías reales deben usarse con cuidado y, en ocasiones, por ejemplo cuando se trata de código heredado."

Así que tal vez me estoy perdiendo algo y no hay manera mejor (derecha) para verificar que MethodA y methodB fueron llamados sin llamar de forma explícita en el caso de prueba.

Gracias.

¿Fue útil?

Solución

Sí, spy() es apto para su propósito. La advertencia se debe al hecho de que los métodos reales se invocan, y por lo tanto se pueden obtener resultados inesperados (por ejemplo - dinero real está retirando de una cuenta bancaria)

Otros consejos

Si el código necesita espía para las pruebas unitarias - algo malo. Spy es un primer signo de un olor código. Usted tiene dos opciones para evitar que en su ejemplo:

  1. Usted puede evitar burlador del método y probar todo el algunMetodo.
  2. Si MethodA y methodB es realmente necesita ser burlado -. Puede moverlos a clase separada etc.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top