[英]Mockito: Mock a method call inside another method
所以我试图在另一个方法中模拟一个方法调用,这是伪代码
class A{
public String getAName(String id){
B b = new B();
// do something
return b.getBName(id);
}
}
testgetName{
public void testA(){
B mockB = mock(B.class);
Mockito.doReturn("Bar").when(mockB).getBName(id);
A a = new A();
a.getAName(id); //this still calls "b.getBName(id)" in class implementation
}
}
这里的问题是a.getAName
仍然调用b.getBName(id)
-不知道为什么吗?
关于如何正确模拟b.getBName(id)
任何建议
谢谢
因为您没有在类A内注入/使用模拟对象。在类A中,您正在创建一个新的B对象。 因此,永远不会使用模拟对象。 要解决此问题,请将您的A类实现更改为以下内容:
B作为班级成员:
class A{
B b;
public String getAName(String id){
// do something
return b.getBName(id);
}
}
然后在您的测试方法中,将模拟对象注入类A中的B成员。请参见下文:
public void testA()(){
B mockB = mock(B.class);
Mockito.doReturn("Bar").when(mockB).getBName(id);
A a = new A();
a.b = mockB; //add this line to use mock in A
String testStr = a.getAName(id); //this still calls "b.getBName(id)" in class implementation
System.out.println(testStr);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.