我正在设置int
这样的值:
when(status.getCurrentSeq()).thenReturn(0);
当测试用例运行时,代码逻辑将CurrentSeq的值设置为1。
status.setCurrentSeq(1)
但是currentSeq
在模拟对象中仍然是0
。再次获取status.getCurrentSeq()
始终返回0
。
答案 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。