gpt4 book ai didi

java - 模拟在测试中创建的对象内部方法

转载 作者:行者123 更新时间:2023-11-30 09:04:48 24 4
gpt4 key购买 nike

我有一个我想测试的类。只要有可能,我就会为那个依赖于其他类对象的类做依赖注入(inject)。但是,我遇到了一个情况,我想在不重组对象的情况下模拟对象代码而不是应用 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 类中的打印对象。因为,我在测试类中模拟它,但它是在被测方法中创建的。我做了我的研究,但不能找到任何好的资源。

我知道从这个方法中创建打印对象并注入(inject)对象是更好的方法,但我想按原样测试代码,在方法内部创建打印对象。有什么办法吗这个

最佳答案

如果您只想模拟 car.printDelegate() 的返回值,模拟调用的任何 Print 实例怎么样?

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

顺便说一句,我对您的以下代码感到困惑:-

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?

关于java - 模拟在测试中创建的对象内部方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com