我正在尝试单元测试一个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());
}
所以我想使用参数捕获器(但不完全确定如何)从格式方法调用中获取映射并检查返回的映射。我目前拥有的代码是我的所有代码,但我无法断言任何东西,因此我想检查地图包含我期望的内容。希望有意义
答案 0 :(得分:0)
您想要做的是确认传递给AnotherClass
的地图内容。
如果AnotherClass
是一个界面,您可以创建AnotherClass
的模拟实例并将其注入MyClass
。然后,您可以验证是否已使用您选择的参数调用它:
Mockito.verify(mockAnotherClass).doSomething(expectedMap);