Erreur de compilation lors de l'utilisation EasyMock.attendre() dans l'exemple très simple?
Je suis en train d'essayer un exemple très simple à l'aide de EasyMock, mais j'ai tout simplement impossible de la faire construire. J'ai le cas test suivant:
@Test
public void testSomething()
{
SomeInterface mock = EasyMock.createMock(SomeInterface.class);
SomeBase expected = new DerivesFromSomeBase();
EasyMock.expect(mock.send(expected));
}
Mais j'ai l'erreur suivante dans le EasyMock.expect(...
ligne:
The method expect(T) in the type EasyMock is not applicable for the arguments (void)
Quelqu'un peut-il me diriger dans la bonne direction? Je suis complètement perdu.
OriginalL'auteur Bjarke Freund-Hansen | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Si vous voulez tester
void
méthodes, appelez la méthode que vous voulez tester sur votre maquette. Ensuite, appelez leexpectLastCall()
méthode.Voici un exemple:
IAnswer
est un générique et a besoin d'un modèle. Si j'utiliseIAnswer<Object>
il n'y a pas de méthodegetCurrentArguments()
disponibles dans le champ d'application de laanswer()
méthode. Ce que je fais mal?vous avez raison, il devrait être
EasyMock.getCurrentArguments()
. J'ai eu une statique à l'importation, alors je n'avais pas remarqué qu'il lui manquait.OriginalL'auteur Jasper
Depuis votre méthode send() retourne void, il suffit d'appeler la simulation de la méthode et les valeurs attendues et de relecture:
replay()
je suis prévu pour effectuer l'action qui serait en fait la causemock.send()
arriver. Et EasyMock s'affirmer que les mêmes appels que j'attends, avec les mêmes paramètres sont exécutées à partir de ma classe de test?Oui, c'est correct @bjarkef.
OriginalL'auteur Biju Kunjummen
Puisque vous êtes en se moquant d'une interface, le seul but de se moquant d'une méthode serait de renvoyer un résultat à partir de cette méthode. Dans ce cas, il semble que votre "envoyer" de retour de la méthode est de type void. Le " EasyMock.s'attendre à " la méthode est générique et s'attend à un type de retour, qui est à l'origine du compilateur pour vous dire que vous ne pouvez pas utiliser une méthode void, car il n'a pas de type de retour.
Pour plus d'informations, voir la EasyMock documentation de l'API à http://easymock.org/api/easymock/3.0/index.html.
OriginalL'auteur Joshua Marble
Vous ne pouvez pas le script méthodes avec un vide de retour, découvrez cette question pour une bonne réponse sur la façon dont vous pouvez simuler le comportement de votre
send
méthode sur votreexpected
objet.OriginalL'auteur Mike Partridge