En el siguiente ejemplo:Asegurar métodos no-burlado no son llamados en Mockito
Execution execution = mock(Execution.class);
when(execution.getLastQty()).thenReturn(1000.0);
when(execution.getLastPrice()).thenReturn(75.0);
order.onFillReceived(execution);
assertEquals(0, order.getLeavesQty(), 0);
ejecución tiene muchos otros métodos que no debe ser llamado. Solo los dos métodos que se han burlado se deben usar dentro de esta prueba y se deben llamar. Si se llaman otros métodos, la prueba debería fallar.
¿Cómo le digo a Mockito que falle si se llaman otros métodos?
¿Por qué le gustaría? Si la clase 'Order' llama a otros métodos de la clase' Execution' y no afecta el resultado del comportamiento que estás probando, ¿por qué quieres que la prueba falle? –
En este caso particular ... digamos que order.onFillReceived termina asignando order.getLeavesQty según el método de execution.getWrongQty(). Como getWrongQty devolverá el valor predeterminado para ese método (0), la afirmación seguirá funcionando aunque getLeavesQty no se establezca con el valor correcto. Esto es solo porque el valor predeterminado para valores incorrectos es el mismo valor que lo que se afirma en la prueba. – user465342
No lo entiendo del todo. Pero, ¿no sería más limpio elegir valores para la prueba que no pueden suceder fácilmente por accidente? De modo que si la prueba pasa, usted sabe que el cálculo ha sucedido correctamente. Si la prueba no demuestra que se calculó el valor correcto (en lugar de hacerlo por accidente), cuestionaría el valor de la prueba. –