2010-05-27 2 views
7

Mockito api fournit la méthode:Mockito VÉRIFIER pas plus d'interactions, mais omettez getters

Mockito.verifyNoMoreInteractions(someMock); 

, mais est-il possible Mockito de déclarer que je ne veux pas plus d'interactions avec une maquette donnée à l'exception des interactions avec son méthodes de getter?

Le scénario simple est celui dans lequel je teste que le SUT ne change que certaines propriétés d'un mock donné et laisse les autres propriétés inexploitées.

Dans l'exemple que je veux vérifier que UserActivationService change propriété Active sur une instance de la classe utilisateur mais does't quoi que ce soit à des propriétés comme rôle, mot de passe, AccountBalance, etc.

+0

Voir aussi http://stackoverflow.com/questions/12013138/mockito-verify-no-more-interactions-with-any-mock – Vadzim

Répondre

13

Non cette fonctionnalité est pas à Mockito . Si vous en avez souvent besoin, vous pouvez le créer vous-même en utilisant Wizzardry réflexion, même si cela va être un peu douloureux.

Ma suggestion serait de vérifier le nombre d'interactions sur les méthodes que vous ne voulez pas appelé à l'aide trop souvent 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(); 
} 

Bien sûr, la sensibilité de la conception de l'API WorldLeader pourrait être discutable, mais comme un exemple qu'il devrait faire.

Questions connexes