有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    似乎您要做的是确认传递给AnotherClass的映射的内容

    如果AnotherClass是一个接口,那么可以创建AnotherClass的模拟实例,并将其注入MyClass。然后,您可以验证是否已使用您选择的参数调用它:

    Mockito.verify(mockAnotherClass).doSomething(expectedMap);