我有一个类,它的方法只接受一个参数。该参数是模拟类中的嵌套类,但它是私有的(和静态的,但我不认为这有多大区别)。我该如何嘲弄这个方法呢?
的例子:
public class myClass {
public anotherObject;
public myClass(AnotherObject anotherObject) {
this.anotherObject = anotherObject;
}
public void exec() {
//Some instructions ...
//This second method is inside another completely seperate class.
anotherObject.secondMethod(new NestedClass());
}
private static class NestedClass {
public NestedClass() {
//Constructor
}
//Variables and methods, you get the picture
}
}
在上面的例子中,secondMethod(…)是我想模拟的方法。
所有试图找到这个问题的其他例子只是返回与模拟单个私有嵌套类有关的结果,或模拟静态类,这与此不完全相关,似乎没有提供任何工作,我可以弄清楚。
编辑:我正在寻找某种解决方案,看起来像这样:
@Test
public void testExec() {
AnotherObject anotherObject = mock(AnotherObject.class);
when(anotherObject.secondMethod(any(NestedClass.class))).thenReturn(0);
MyClass testThisClass = new MyClass(anotherObject);
}
注意:恐怕我不允许修改代码,我只允许创建这些测试,以确保当前的实现在对其进行修改时能够正常工作。
如果我正确理解需求,添加一个方法,说executeSecondMethod()。在主方法类中调用这个方法。
public class myClass {
public void exec() {
//Some instructions ...
secondMethod(new NestedClass());
}
public void secondMethod(NestedClass example) {
//Some instructions that I want to just mock out...
}
private static class NestedClass {
//Variables and methods, you get the picture
}
public static executeSecondMethod(){
secondMethod(new NestedClass()); // pass the nested class object here
}
}
public class mainClass{
public static void main(){
executeSecondMethod();
}
}