Mockito api 提供方法:
Mockito.verifyNoMoreInteractions(someMock);
但是在 Mockito 中是否可以声明我不希望与给定的模拟进行更多的交互,但与其 getter 方法的交互除外?
一个简单的场景是我测试 SUT 仅更改给定模拟的某些属性而保留其他属性未开发的场景。
在示例中,我想测试 UserActivationService 在类 User 的实例上更改属性 Active 但对角色、密码、帐户余额等属性没有做任何事情。
Mockito api 提供方法:
Mockito.verifyNoMoreInteractions(someMock);
但是在 Mockito 中是否可以声明我不希望与给定的模拟进行更多的交互,但与其 getter 方法的交互除外?
一个简单的场景是我测试 SUT 仅更改给定模拟的某些属性而保留其他属性未开发的场景。
在示例中,我想测试 UserActivationService 在类 User 的实例上更改属性 Active 但对角色、密码、帐户余额等属性没有做任何事情。
不,此功能当前不在 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 设计的敏感性可能值得商榷,但作为一个例子,它应该这样做。