with tutorial mock how example español java junit mocking mockito junit4

java - how - mockito tutorial español



Mocking Objects Created Método interno Bajo prueba (1)

Si solo quiere simular el valor de retorno de car.printDelegate (), ¿qué le parece imitar cualquier instancia de impresión para la llamada?

when(car.printDelegate(org.mockito.Matchers.any(Print.class))).thenReturn(9);

Por cierto, confundo tu siguiente código:

List<String> list=new LinkedList<String>(); // allocate a empty list worth list=car.getList(); // nothing but wasting memory. ... return num; // no definition, do you mean printedLines?

Tengo una clase que me gustaría probar. Siempre que sea posible, haré inyecciones de dependencia para esa clase que depende del objeto de otras clases. Pero me encontré con un caso en el que me gustaría burlarme del objeto sin reestructurar el código y no aplicando DI.

Aquí está la clase bajo prueba:

public class Dealer { public int show(CarListClass car){ Print print=new Print(); List<String> list=new LinkedList<String>(); list=car.getList(); System.out.println("Size of car list :"+list.size()); int printedLines=car.printDelegate(print); System.out.println("Num of lines printed"+printedLines); return num; } }

y mi clase de prueba para esto es:

public class Tester { Dealer dealer; CarListClass car=mock(CarListClass.class); List<String> carTest; Print print=mock(Print.class); @Before public void setUp() throws Exception { dealer=new Dealer(); carTest=new LinkedList<String>(); carTest.add("FORD-Mustang"); when(car.getList()).thenReturn(carTest); when(car.printDelegate(print)).thenReturn(9); } @Test public void test() { int no=dealer.show(car); assertEquals(2,number);//not worried about assert as of now } }

No pude encontrar una solución para simular el objeto de impresión dentro de la clase Dealer. Desde entonces, me burlo de la clase Test, pero se crea en el método bajo prueba. Hice mi investigación, pero no pude encontrar ninguna buena recurso.

Sé que tomar la creación de objetos de impresión de este método y la inyección del objeto es la mejor manera, pero me gustaría probar el código tal como está, con el objeto de impresión que se está creando dentro del método. ¿Hay alguna manera de hacerlo?