模拟DAO类及其中的方法



我试图模拟一个DAO类,该类具有返回特定类列表的方法。

private List<SpecificClass> getInfo(){
List<SpecificClass> returnInformation = dao.list(ParamOne, Param Two, SpecificClass.class);
}

上述方法中提到的dao指的是另一个类。

我从模仿DAO类开始。

Mockito.mock(TheDaoClass.class);

和创建模拟列表

private @Mock List<SpecificClass> returnedList = new ArrayList<SpecificClass>();

然后调用那个方法

dao.list(ParamOne, Param Two, SpecificClass.class);

,并指定调用

时需要做什么。

when(dao.list(ParameterOne, anyString(), SpecificClass.class)).thenReturn(returnedList);

当我执行上述操作时,我得到一个空指针异常。有两种原因:

我知道列表是空的,但它应该是保留SpecificClass的五个值,但这一点不应该抛出一个错误。

我认为对象dao没有得到适当的嘲笑。我只是模仿整个类Mockito.mock(TheDaoClass.class),以便模仿与该类相关的任何对象。我认为这并没有达到目标。我如何着手解决这个问题?任何帮助都是感激的。谢谢。

使模拟DAO对象成为测试类的属性,如下所示:

@Mock
private TheDaoClass mockDaoClass;

然后,在测试类开始的setUp()方法中调用initMocks:

@BeforeClass
public void setUp() {
    MockitoAnnotations.initMocks(this);
}

这应该可以防止NullPointer .

另外,我建议不要模拟List对象(如果您模拟任何Java库数据类型,您可能做错了),您应该创建一个列表并填充它。

List<SpecificClass> list = new ArrayList<SpecificClass>();
list.add(new SpecificClass());

然后从模拟方法返回列表。

when(mockDaoClass.list(anyString(), anyString(), SpecificClass.class)).thenReturn(list);

相关内容

  • 没有找到相关文章

最新更新