【问题标题】:Can Mockito verify total number of method calls on a mocked Object?Mockito 可以验证模拟对象上的方法调用总数吗?
【发布时间】:2015-06-08 12:53:57
【问题描述】:

Mockito 的 verify 可以断言与模拟对象上发生的方法的一定数量的交互。

// Given
SomeService someService = mock(SomeService.class);

// When
someService.prepare();
someService.prepare();

// Then
verify(someService, times(2)).prepare(); // test passes

有时在单元测试中知道模拟对象上的方法调用总数没有改变是很有用的。

这在添加新方法调用时提供可见性(即失败的测试)。

Mockito 是否提供此功能?

在某些情况下我想打电话:

verify(someService, times(2));

..没有得到UnfinishedVerificationException:

org.mockito.exceptions.misusing.UnfinishedVerificationException: 
Missing method call for verify(mock)...

Example of correct verification:
  verify(mock).doSomething()

【问题讨论】:

  • 这是verifyNoMoreInteractions 的用途吗?编辑:好像是这样。不太一样,但它适用于我的目的。
  • 对我来说不清楚你的意思。如果您不关心异常,为什么要使用verify(someService, times(2))?你想测试什么?
  • 我想断言没有对模拟对象执行其他方法调用。 verifyNoMoreInteractions 有效地给了我这个,只要我验证了我所期望的所有交互。

标签: java unit-testing mockito


【解决方案1】:

当时还没有 API。您可以尝试使用MockingDetails.getInvocations编写自己的验证器代码

Mockito.mockingDetails(mock).getInvocations()

【讨论】:

  • 谢谢,这么想。很高兴我没有遗漏一些明显的东西!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 2018-11-03
  • 1970-01-01
  • 2017-05-17
  • 2012-02-23
  • 1970-01-01
相关资源
最近更新 更多