8

Mockito api 提供方法:

Mockito.verifyNoMoreInteractions(someMock);

但是在 Mockito 中是否可以声明我不希望与给定的模拟进行更多的交互,但与其 getter 方法的交互除外?

一个简单的场景是我测试 SUT 仅更改给定模拟的某些属性而保留其他属性未开发的场景。

在示例中,我想测试 UserActivationService 在类 User 的实例上更改属性 Active 但对角色、密码、帐户余额等属性没有做任何事情。

4

1 回答 1

16

不,此功能当前不在 Mockito 中。如果您经常需要它,您可以使用反射巫术自己创建它,尽管这会有点痛苦。

我的建议是验证您不想经常调用的方法的交互次数VerificationMode

@Test
public void worldLeaderShouldNotDestroyWorldWhenMakingThreats() {
  new WorldLeader(nuke).makeThreats();

  //prevent leaving nuke in armed state
  verify(nuke, times(2)).flipArmSwitch();
  assertThat(nuke.isDisarmed(), is(true));
  //prevent total annihilation
  verify(nuke, never()).destroyWorld();
}

当然,WorldLeader API 设计的敏感性可能值得商榷,但作为一个例子,它应该这样做。

于 2010-06-13T08:56:45.603 回答