如何嘲笑一个道两次,却被同一个对象召唤



如何模拟在测试方法中使用相同的对象但具有不同内部状态(参数的(两次调用的 Dao。

User user = new User();
user.setActivity(false);
int prevActivity = accessDao.calculateWork(user);
user.setActivity(true);
int predActivity = accessDao.calculateWork(user);

if(prevActivity==0) {
    //someAction
}
...
if(predActivity<15) {
    //someOtherAction.
}

我无法更改代码。对于以下情况,莫西托有什么办法吗?

这是您可能正在寻找的吗?

accessDao = mock(AccessDao.class);
when(accessDao.calculateWork(user)).thenReturn(0).thenReturn(15)

你可以指示Mokcito先返回一个答案,然后再返回另一个答案。但是请注意,最后一个将是"无限重复";即始终返回 15(如果您有对该方法的进一步调用(。

你可以使用Mockito的答案。

AtomicInteger counter = new AtomicInteger();
when(accessDao.calculateWork(user)).thenAnswer(new Answer() {
  Object answer(InvocationOnMock invocation) {
    if (counter.getAndIncrement() == 0) return someValue;
    return anotherValue;
  }
});

相关内容

  • 没有找到相关文章

最新更新