Mockito avec des variables locales
J'ai une méthode simple qui retourne un String
.
Il crée également un local List
. Je veux tester la valeur ajoutée pour les locaux List
.
Voici un exemple
package com.impl;
import java.util.ArrayList;
import java.util.List;
import com.test.domain.CustomerVo;
public class ClassImpl {
public String assignGift(CustomerVo customerVo) {
List<String> listOfGift = new ArrayList<String>();
if (customerVo.getName().equals("Joe")) {
listOfGift.add("ball");
} else if ((customerVo.getName().equals("Terry"))) {
listOfGift.add("car");
} else if (customerVo.getName().equals("Merry")) {
listOfGift.add("tv");
}else {
listOfGift.add("no gift");
}
return "dummyString";
}
}
Comment puis-je tester que lorsque le customerVo.getName.equals("Terry")
, car
est ajouté à la local List
.
La liste de tableaux est purement locale à la méthode, il n'est pas ajouté à la CustomerVo, de sorte que vous ne pouvez pas tester quoi que ce soit. C'est comme si elle n'existait pas.
+1 pour Frank. La méthode pourrait être réduit à
merci beaucoup pour la réponse c'est un mannequin méthode créée pour lui demander si nous pouvons tester la variable locale.
vous devriez avoir indiqué clairement dans votre question.
Le point est que vous ne devriez PAS tenter de tester la valeur d'une variable locale. Essais de méthodes doit être en ce qui concerne la méthode de l'effet: valeur de retour, les exceptions levées, les paramètres ou les champs de la classe modifiés, d'autres effets secondaires extérieur à la classe. Si la valeur d'une variable locale n'affecte pas l'un de ces, cette variable locale est inutile et devrait être supprimé.
+1 pour Frank. La méthode pourrait être réduit à
return "dummyString";
et de faire toujours la même chose, mais de manière plus efficace.merci beaucoup pour la réponse c'est un mannequin méthode créée pour lui demander si nous pouvons tester la variable locale.
vous devriez avoir indiqué clairement dans votre question.
Le point est que vous ne devriez PAS tenter de tester la valeur d'une variable locale. Essais de méthodes doit être en ce qui concerne la méthode de l'effet: valeur de retour, les exceptions levées, les paramètres ou les champs de la classe modifiés, d'autres effets secondaires extérieur à la classe. Si la valeur d'une variable locale n'affecte pas l'un de ces, cette variable locale est inutile et devrait être supprimé.
OriginalL'auteur user1999453 | 2013-05-12
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas tout à fait facile.
Vous avez besoin d'utiliser quelque chose comme powermock.
Avec powermock vous créer un scénario avant la méthode est appelée, et de les lire, cela signifie que vous pouvez dire à la
ArrayList
constructeur de la classe d'anticiper d'être appelé et retourner unmock
plutôt que d'un véritableArrayList
.Cela vous permettrait de faire valoir sur les
mock
.Quelque chose comme cela devrait fonctionner:
Ainsi, lorsque votre méthode crée le local
List
powermock sera effectivement de retour de votre maquetteList
.Plus d'informations ici.
Ce genre de moquerie est vraiment pour les tests unitaires de l'héritage de code qui n'a pas été écrite pour être testées. Je recommande fortement, si vous le pouvez, de la réécriture du code, de sorte que ces complexes se moquant de ne pas à avoir lieu.
OriginalL'auteur Boris the Spider