代码之家  ›  专栏  ›  技术社区  ›  mgamer

mockito不再验证交互,而是忽略getter

  •  8
  • mgamer  · 技术社区  · 14 年前

    Mockito API提供方法:

    Mockito.verifyNoMoreInteractions(someMock);
    

    但是在mock i to中,是否有可能声明我不希望与给定的mock i to进行更多的交互,除非与getter方法进行交互?

    在这个简单的场景中,我测试SUT只改变给定模型的某些属性,而不开发其他属性。

    在示例中,我想测试useractivationservice是否更改类用户实例上的active属性,但对角色、密码、accountbalance等属性不做任何操作。

    1 回复  |  直到 9 年前
        1
  •  14
  •   iwein    9 年前

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

    我的建议是验证您不希望经常使用的方法上的交互次数 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设计的敏感性可能存在争议,但作为一个例子,它应该这样做。