模拟对象没有更新值

时间:2015-07-06 11:12:22

标签: java unit-testing junit mocking mockito

我正在设置int这样的值:

when(status.getCurrentSeq()).thenReturn(0);

当测试用例运行时,代码逻辑将CurrentSeq的值设置为1。

status.setCurrentSeq(1)

但是currentSeq在模拟对象中仍然是0。再次获取status.getCurrentSeq()始终返回0

1 个答案:

答案 0 :(得分:2)

您无法在模拟对象上设置值。它仍将返回被嘲笑返回的内容。在这种情况下为0。

如果你不希望它返回0,为什么你甚至需要模拟方法返回0? 也许完全删除when(status.getCurrentSeq()).thenReturn(0);可以解决您的问题。

编辑: 也许你需要连续拨打电话?

when(status.getCurrentSeq())
  .thenReturn(0)
  .thenReturn(1);

它也可以缩短为:

when(status.getCurrentSeq())
  .thenReturn(0,1);

可以通过以下方式验证此行为:

assertEquals(0, status.getCurrentSeq());
assertEquals(1, status.getCurrentSeq());
assertEquals(1, status.getCurrentSeq());

第一次调用模拟方法时返回0,每次连续调用时返回1。