我使用的是Mockito 1.9.5、Maven 3.2.3和JUnit 4.11。我在JUnit测试中设置了以下内容。。。
final Set<Account> accounts = new HashSet<Account>();
final Account acct1 = new Account();
acct1.setId(“id1”);
accounts.add(acct1);
…
Mockito.doReturn(acctTeamMemberMap).when(m_accountTeamMemberDao).getManagers(accounts);
问题是,我在JUnit测试中创建的Account对象与我执行方法调用时实际作为参数传入的对象不同。我的问题是,当各种对象的ID字段与我在JUnit测试中的ID匹配时,我如何告诉Mockito返回结果?换句话说,如果上面的Account对象有id"id1"one_answers"id2",我希望Mockito总是返回结果,如果实际参数也有id"id1"one_answers"id2"。
谢谢,-Dave
您可以使用Mockito中的any()matcher,并且无论传递了什么值都只返回结果:
Mockito.doReturn(acctTeamMemberMap).when(any()).getManagers(accounts);
或者,您可以实现自己的匹配器,并检查传递的值是否遵循指定的约束:
class IsListOfTwoElements extends ArgumentMatcher<List> {
public boolean matches(Object myDao) {
String id = ((MyDao) myDao).size().getId();
return id.equals("id1") || id.equals("id2");
}
}