Пересмешивание объектов, созданных внутри метода Тестируется
У меня есть класс, который я хотел бы проверить. Когда бы ни было возможно, я сделал бы инъекции зависимостей для этого класса, который зависит от объекта других классов. Но я столкнулся со случаем, когда я хотел бы смоделировать объект без реструктуризации кода и не Appling DI.
Вот тестируемый класс:
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;
}
}
и мой тестовый класс для этого:
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
}
}
Я не мог найти решение для насмешки над объектом печати внутри класса Dealer. Так как я высмеиваю его в классе Test, но он создается в тестируемом методе. Я провел исследование, но не смог найти ничего хорошего ресурс.
Я знаю, что создание объекта Print из этого метода и Injection - лучший способ, но я хотел бы протестировать код, как есть, с созданием объекта print внутри метода. Есть ли способ сделать это