java - 如何使用 Junit/Mockito 模拟存在于外部类中但由内部类使用的 class.method
问题描述
我有一些代码包含一个调用外部类中的依赖项的内部类。使用 mockito 进行测试时,如何模拟内部类中的方法?
@Component
public class ClassA {
@Autowired private DaoClass daoClass;
public final ClassB classB = new ClassB();
protected class ClassB extends ....{
@Override
public int execute{
daoClass.getStuff();
}
}
}
在我的单元测试中,如果我做这样的事情
Class ATest{
@InjectMock
ClassA classA;
@Mock
DaoClass daoClass;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
}
@Test
public void someTest{
when(daoClass.getStuff()).thenReturn(1);
int result = classA.classB.execute();
}
当我运行这个测试时,daoClass.getStuff() 总是返回一个空值,看起来模拟不适用于内部类。有什么方法可以让模拟工作?
解决方案
推荐阅读
- android - 对齐小部件内部在颤动中展开成行
- xaml - WebView GestureRecognition 在 Xamarin 表单中不起作用
- javascript - Angular:无法返回值
- excel - 应用宏时程序错误太大。我怎样才能让它变小?
- java - 如何在 Java 中将 YUV 转换为 JPG
- html - 如何在 ionic 3 中使用 inc 和 dec 函数更改输入值
- apache-spark - Nifi:无法在 ExecuteScript 处理器中导入 pyspark
- javascript - xAxes 的最小值是否必须在数据集中
- typescript - 是否可以区分打字稿中的字符串和字符串枚举?
- azure - 使用 Graph API B2C 将用户添加到组