2017-09-29 4 views
1

Je veux juste savoirMockito quand et vérifier la différence de méthode

1) quand je l'appelle à when() Mockito, il exécute en fait le comportement de la méthode mockedObject ou non?

2) what Si je renvoie une valeur incorrecte dans when().thenReturn() comme ci-dessous. Le test élémentaire sera "faux" ou renverra-t-il 50 au lieu de 30?

when(mockedObject.add(10,20)).thenReturn(50); 

3) Pourquoi devrais-je utiliser thenReturn() obligatoire, même si la méthode objet moquée est vide? (Il est donne erreur lorsque je n'ai pas utilisé thenReturn().

ajoute une fonctionnalité à un objet simulé en utilisant la quand() méthode.

@Test 
public void testAdd(){ 
when(mockedObject.add(20.0,30.0)).thenReturn(50.00); 
} 

4) Si j'appelle

verify(mockedObject,times(1)).add(20.0, 30.0); 

Il vérifie que les méthodes sont appelées sur objet mocké ou non avec le même paramètre et vérifie l'appel à la méthode comme seulement 1 fois, non? Donc, puis-je utiliser quand() pour ajouter une fonctionnalité à la méthode objet moquée sans utiliser verify() ou il exige en fait d'invoquer verify() après avoir appelé quand() méthode

Répondre

0

1) Non, sauf si vous avez utilisé @Spy au lieu de @Mock. C'est pourquoi vous pouvez vous moquer même une interface.

2) Il retournera la valeur par défaut en fonction du type de valeur de retour (par exemple retournera 0 si le type de retour est Integer).

3) Si vous avez utilisé @Mock, vous n'avez pas besoin d'utiliser when.thenReturn pour les méthodes vides de ce modèle. L'implémentation ne sera simplement pas appelée.

4) when est utilisé dans la partie Arrangement de votre test avant d'appeler la méthode testée. verify est utilisé après l'invocation dans la partie assertion. L'utilisation de tous les deux dans un cas de test n'est pas obligatoire. Vous pouvez utiliser seulement when, seulement verify des deux dans des endroits appropriés.

+0

1) vous avez dit Non pour 1 question, je suis tombé c'est OUI. when() n'exécutera que le comportement de la méthode mockedObject. Quand vous utilisez @spy, alors seule la méthode réelle de l'objet réel sera appelée, je pense. vérifiez ce https://www.tutorialspoint.com/mockito/mockito_spying.htm –

+0

Lorsque vous n'utilisez pas when.thenRetrun pour un objet Mocked alors l'implémentation ne sera pas appelée, vous obtiendrez la valeur de retour par défaut. Si vous n'utilisez pas doReturn.when.then sur un objet Spied, une méthode réelle sera appelée –