如何在Mockito中创建自定义数据类型列表的模拟?

时间:2014-06-17 07:29:45

标签: java unit-testing mockito

我有一个具有以下定义的用户类:

class User {

  Integer id;
  String name;
  String addr;

  //getters and setters

}

现在,在测试函数时,我需要返回一个存根的模拟用户列表,如:

Mockito.when(userService.getListOfUsers()).thenReturn(mockList);

现在可以按以下方式创建此mockList:

List mockList = Mockito.mock(ArrayList.class);

但是这个mockList可以是任何东西的列表。我无法确保其类型。有没有办法创建列表:

List<User> mockListForUser = Mockito.mock(?);

2 个答案:

答案 0 :(得分:11)

您可能希望使用模拟对象填充普通列表。 E.g。

List<User> mockList = new ArrayList<>();

User mockUser1 = Mockito.mock(User.class);
// ...    

mockList.add(mockUser1);
// etc.

请注意,默认情况下,Mockito会为任何返回集合的模拟方法返回一个空集合。因此,如果您只想返回一个空列表,Mockito已经为您做了。

答案 1 :(得分:5)

在测试中使用@Mock注释,因为Mockito可以使用类型反射:

@Mock
private ArrayList<User> mockArrayList;