python - 如何在Python Mockito中正确使用verifyNoUnwantedInteractions()?

标签 python mockito

我尝试在 Mockito 的 Python 版本中使用 verifyNoUnwantedInteractions(),但要么我对它应该做什么的理解不正确,要么它实际上不起作用。我认为会发生的是,它会检查是否与 stub 方法没有意外的交互。但是,会发生以下情况:

这就过去了。我预计 destroy() 调用会引发异常,因为它不是 expected

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 被省略。

现在我认为这可以归结为whenexpect之间的区别。如果你这样做

when(maker).destroy()

您可以根据需要多次调用它,包括零次。您可以但肯定不必验证在运行被测单元后调用它的次数。这就像测试函数中抛出的任何其他断言一样,即当您验证时。

将其与您预先设置通话时间预期的预期进行比较。

expect(maker, times=1).destroy()

现在,您的被测代码可以调用该方法一次,否则它将抛出被测代码。

对于我们在示例中讨论的内容,verifyNoUnwantedInteractions 将仅检查 maker.destroy() 是否已被调用

关于python - 如何在Python Mockito中正确使用verifyNoUnwantedInteractions()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742022/

相关文章:

python - 我正在尝试创建一个 cal_average 函数,但是我不断收到 python 无法分配给函数调用的语法错误

java.lang.UnsupportedOperationException 测试时

java - 使用mockito和powermockito在java中进行单元测试

java - 使用 mockito 在另一个 spring 服务中模拟服务

java - 找不到 PowerMock 类

android - Android 应用程序上的 PowerMock + Mockito + Maven 显示 Dex 加载程序错误

python - 在 Python 中维护一个可自动清理的线程列表

python - Flask 更新 SQLite 记录

python - 如何逐行跳过 DataFrame 标签

javascript - 在流中传递 ID3 信息并在前端进行解析