java Mockito void方法如何检查私有变量?
我试图对一个void方法进行单元测试,该方法从数据库获取数据,格式化为map,并传递到另一个类
我已经模拟了数据库调用并返回了我自己的数据,我想检查已格式化的映射,它在正确的位置包含正确数量的元素和键
我试着和argumentCaptor一起玩,但我还是努力想让自己的头脑清醒过来
测试方法:
public class MyClass {
@Autowired
private Dao dao;
@Autowired
private AnotherClass anotherClass;
public void format(String, Date) {
Map<Object,Object> map = getDataAndFormat(String, Date);
anotherClass.doSomething(map);
}
private Map<Object, Object> getDataAndFormat(String, Date) {
Map map;
if (String.equals("A") {
map = dao.getData(Date);
}
else {
map = dao.getDataSomeThingElse(Date);
}
}
} 非常感谢您的帮助
谢谢
所以:这就是我目前的情况:
@InjectMocks
@Autowired
//class to test
private MyClass myClass;
@Mock
Dao dao;
@Captor
private ArgumentCaptor<String> argumentCaptor;
@Captor
private ArgumentCaptor<Date> argumentCaptorB;
public void testFormat()
{
when(dao.getData(Matchers.any())).thenReturn(data());
myClass.format("A",new Date());
}
所以我想使用参数捕捉器(但不完全确定如何)从format方法调用中获取映射并检查返回的映射。我目前拥有的代码正在命中我所有的代码,但我无法断言任何东西,因此我想检查映射是否包含我期望的内容。希望这是有道理的
# 1 楼答案
似乎您要做的是确认传递给
AnotherClass
的映射的内容如果
AnotherClass
是一个接口,那么可以创建AnotherClass
的模拟实例,并将其注入MyClass
。然后,您可以验证是否已使用您选择的参数调用它: