我是模拟测试的新手,想知道如何使用mockito模拟以下内容。
uDAO = (UserDAO) dao;
其中dao定义为
protected DAO<T, Long> dao;
谢谢!
要为私有和受保护的字段(没有公共setter方法)注入mock,您必须使用反射。使用反射,您可以在该受保护字段的位置设置一个模拟对象。下面是一个反射代码示例:
Field hack = <PUT YOU CLASS NAME>.class.getDeclaredField("dao");
hack.setAccessible(true);
hack.set(<Object of the class where you are injecting the mock>,<the mock object>);
要创建模拟对象,您可以使用常规的PowerMockito.mock
或Mockito.mock
函数。
关于反射的更多信息,请查看以下链接:
在Java中是否可以通过反射访问私有字段http://www.java2s.com/Code/Java/Reflection/Setprivatefieldvalue.htm