Estoy intentando escribir una prueba unitaria que necesita confirmar si se llama o no a un método. Estoy usando JUnit, Mockito y PowerMock.Cómo verificar si se llama al método en el sistema bajo prueba (no es un simulacro)
public class Invoice { protected void createInvoice() { // random stuff here markInvoiceAsBilled("57"); } protected void markInvoiceAsBilled(String code) { // marked as billed } }
Por lo tanto, aquí mi sistema bajo prueba es Invoice
. Estoy corriendo esta prueba:
public class InvoiceTest { @Test public void testInvoiceMarkedAsBilled() { Invoice sut = new Invoice(); Invoice sutSpy = spy(sut); sut.createInvoice(); // I want to verify that markInvoiceAsBilled() was called } }
Este ejemplo es sólo un ejemplo de lo que el código real se parece ....
Mi problema es que Mockito dice que sólo se puede verificar si se llama un método en un objeto burlado ... pero no quiero burlarme de este objeto, ya que es mi objeto bajo prueba. Sé que usted puede espiar en el objeto que está probando, por lo que aquí es lo que he intentado:
verify(sutSpy).markInvoiceAsBilled("57");
es lo que estoy tratando de hacer no es posible? ¿O simplemente lo estoy haciendo mal?
Gracias a todos :)