Se moquant de méthode void avec EasyMock et Mockito
Bonjour, je voudrais savoir quelle est la meilleure approche pour se moquer des méthodes void par exemple: j'ai un PersonManager en vertu de l'épreuve et puis j'ai dao qui est tournée en dérision.
class PersonManager {
PersonDao dao...
PersonManager(PersonDao dao)...
Preson find(String person)...
void delete(String person)...
}
class PersonManagerTest {
Map<String, Person> persons ..... = "person1", "person2", "person3";
PersonDao mock...
PersonManager manager = new PersonManager(mock);
//easy one
@Test public void shouldReturnExistingPerson() {
expect(mock.find("person1").andReturn(persons.get(0));
Person result = manager.find("person1");
//replay and verify logic
}
//but what should I do here?
@Test public void shouldDeleteExistingPerson() {
//should I remove a person from testing Map holding test data? or what am I doing wrong
}
}
Afin de tester la méthode avec retour a été facile, mais comment engager méthode void? Merci pour les suggestions, et Mcokito exemples sont les bienvenus aussi.
}
Sont une de ces réponses acceptables pour vous?
OriginalL'auteur Jarek | 2011-05-10
Vous devez vous connecter pour publier un commentaire.
Il dépend entièrement de la ce vous êtes en train de tester.
Dans mockito, si vous voulez seulement vérifier que le DAO supprimer la méthode est appelée avec le paramètre approprié, puis vérifier est ce que vous voulez.
Je dirais que c'est exactement ce que vous voulez depuis votre test unitaire pour
PersonManager
ne devrait pas être de testPersonDao
.OriginalL'auteur Alan Escreet
Facile de se moquer, vous n'avez pas besoin de mettre void fonctions autour d'attendre(). Vous avez juste besoin de faire quelque chose comme:
OriginalL'auteur Amir Raminfar
Lors de la suppression de quelque chose, je vous suggère de retourner l'objet que vous venez de supprimer. Il rend les tests plus, beaucoup plus facile et permet de faire les choses après que vous avez supprimé (p. ex. montrant avis, connexion, etc). Je pense que la plupart (tous?) Java collections sont faire.
Tout cela est vrai et correct, cependant très légèrement manque à l'intention de la tester (ce que je comprends). Test si
PersonManager.delete()
renvoie unePerson
instance n'est pas le même que le test si elle appellePersonDao.delete()
.PersonPanager.delete()
pourrait revenirboolean
..Encore vrai, mais alors vous êtes en essais si elle retourne true/false, pas que le DAO est appelée avec le paramètre correct.
OriginalL'auteur Sorrow
Mockito fournit une statique
verify
méthode qui permet de vérifier lorsque vous appelez une méthode, même ceux qui ont void comme type de retour. Pour votre exemple de code, à la suite de mockito code devrait fonctionner:Espère que cette aide.
OriginalL'auteur Spoike