Mockito Quand/Puis Cookbook

Mockito Quand / Alors Cookbook

1. Vue d'ensemble

Ce livre de recettes montrehow to use Mockito to configure behavior dans une variété d'exemples et de cas d'utilisation.

Lesformat of the cookbook is example focused et pratiques - pas de détails et d'explications superflus nécessaires.

Et bien sûr, si vous voulez en savoir plus sur les bons tests avec Mockito, jetez un œil àthe other Mockito articles here.

Lectures complémentaires:

Mockito Vérifier le livre de recettes

Exemples, utilisation et bonnes pratiques deMockito Verify.

Read more

Mockito - Utiliser des espions

Faire bon usage des Spies dans Mockito et leur différence entre les espions et les fous.

Read more

Mockito Mock Méthodes

Ce tutoriel illustre diverses utilisations des méthodes statiques factices standard de l'API Mockito.

Read more

Nous allons être l'implémentation democking a simple list - la même implémentation que nous avons utilisée dans le livre de recettes précédent:

public class MyList extends AbstractList {

    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 1;
    }
}

2. Livre de recettes

configurer un comportement de retour simple pour une simulation

MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString())).thenReturn(false);

boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));

configurer le comportement de retour pour la simulation d'une manière alternative

MyList listMock = Mockito.mock(MyList.class);
doReturn(false).when(listMock).add(anyString());

boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));

configure mock pour lever une exception sur un appel de méthode

@Test(expected = IllegalStateException.class)
public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
    MyList listMock = Mockito.mock(MyList.class);
    when(listMock.add(anyString())).thenThrow(IllegalStateException.class);

    listMock.add(randomAlphabetic(6));
}

configurer le comportement d'une méthode avec le type de retour void - pour lever une exception

MyList listMock = Mockito.mock(MyList.class);
doThrow(NullPointerException.class).when(listMock).clear();

listMock.clear();

configurer le comportement de plusieurs appels

MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString()))
  .thenReturn(false)
  .thenThrow(IllegalStateException.class);

listMock.add(randomAlphabetic(6));
listMock.add(randomAlphabetic(6)); // will throw the exception

configurer le comportement d'un espion

MyList instance = new MyList();
MyList spy = Mockito.spy(instance);

doThrow(NullPointerException.class).when(spy).size();
spy.size(); // will throw the exception

configurez la méthode pour appeler la vraie méthode sous-jacente sur un simulacre

MyList listMock = Mockito.mock(MyList.class);
when(listMock.size()).thenCallRealMethod();

assertThat(listMock.size(), equalTo(1));

configurer un appel de méthode fictif avec une réponse personnalisée

MyList listMock = Mockito.mock(MyList.class);
doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());

String element = listMock.get(1);
assertThat(element, is(equalTo("Always the same")));

3. Conclusion

Ce format est une expérience - je publie certains de mes livres de recettes de développement interne sur un sujet donné - surGoogle Guava,Hamcrest etnow Mockito. L’objectif est d’avoir ces informations facilement accessibles en ligne et de les compléter chaque fois que je rencontre un nouvel exemple utile.

L'implémentation de tous ces exemples et extraits de codecan be found over on GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.