我尝试在 Mockito 的 Python 版本中使用 verifyNoUnwantedInteractions()
,但要么我对它应该做什么的理解不正确,要么它实际上不起作用。我认为会发生的是,它会检查是否与 stub 方法没有意外的交互。但是,会发生以下情况:
这就过去了。我预计 destroy() 调用会引发异常,因为它不是 expect
ed
expect(maker, times=1).create().thenReturn(thing)
when(maker).destroy().thenReturn(thing)
maker.start() # Calls both create() and destroy()
verifyNoUnwantedInteractions(maker)
这不会通过,因为 destroy() 被调用超过零次。 verifyNoUnwantedInteractions()
不是必需的,因为它无论如何都会失败。
expect(maker, times=1).create().thenReturn(thing)
expect(maker, times=0).destroy().thenReturn(thing)
when(maker).destroy().thenReturn(thing)
maker.start() # Calls both create() and destroy()
verifyNoUnwantedInteractions(maker)
到目前为止,在我看来,verifyNoUnwantedInteractions()
非常无用,使用它的原因是什么以及如何正确执行?
最佳答案
verifyNoUnwantedInteractions
仅检查预期
ed stub 。您通过 when
创建的 stub 被省略。
现在我认为这可以归结为when
和expect
之间的区别。如果你这样做
when(maker).destroy()
您可以根据需要多次调用它,包括零次。您可以但肯定不必验证
在运行被测单元后调用它的次数。这就像测试函数中抛出的任何其他断言一样,即当您验证时。
将其与您预先设置通话时间预期的预期
进行比较。
expect(maker, times=1).destroy()
现在,您的被测代码可以调用该方法一次,否则它将抛出被测代码。
对于我们在示例中讨论的内容,verifyNoUnwantedInteractions
将仅检查 maker.destroy()
是否已被调用。
关于python - 如何在Python Mockito中正确使用verifyNoUnwantedInteractions()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742022/