NoAMockException tout Mockito.vérifier(Objet,VerificationMode.atleast(2))
Je suis à l'aide de mockito pour se moquer de l'unité des cas de test et j'obtiens de l'exception suivante
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to verify() is of type ConsumerImpl and is not a mock!
Make sure you place the parenthesis correctly!
See the examples of correct verifications:
verify(mock).someMethod();
verify(mock, times(10)).someMethod();
verify(mock, atLeastOnce()).someMetenter code herehod();
et mon code est
MessageConsumer mConsumer = Mockito.mock(MessageConsumer.class);
String data = "new Message for Testing";
Message message = new Message(data.getBytes());
Mockito.when(mConsumer.next(10, TimeUnit.SECONDS)).thenReturn(message);
StringParserTest parserTest = new StringParserTest();
ConsumerImpl<String> consumer = new ConsumerImpl<String>(mConsumer, parserTest);
String mes=Mockito.verify(consumer,VerificationModeFactory.times(3)).consumeMessage(10,TimeUnit.SECONDS);
S'il vous plaît quelques-on m'aider à résoudre ce problème
Merci d'Avance
SRN
OriginalL'auteur Ramesh | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Bien, c'est exactement ce que mockito dit, vous n'êtes pas en passant d'une maquette pour vérifier !
De Plus, si vous avez vérifié une maquette pourquoi voulez-vous stocker le résultat de l'invocation-vous vérifier, ça ne ferait pas de sens, puisque le consommateur est tournée en dérision. Vérifier, c'est de vérifier les appels sur moqué des objets qui sont les collaborateurs de votre unité de l'objet testé. Qui dans ton cas n'est pas vraiment clair.
Également que vous n'utilisez jamais votre maquette
mConsumer
instance.Vous devriez certainement séparer votre test en 3 phases, l'une pour l'appareil, l'autre pour l'action, et un pour les vérifications. Utiliser la BDD terminologie pour y parvenir, il augmente la capacité de compréhension et de lisibilité pour le testeur et le futur lecteur de ce code (Et Mockito leur offre dans l'API par le biais d'BDDMockito).
Que je ne comprends pas trop ce que le code est en train de tester, à partir du code que vous avez donné, je vais imaginer des choses. Si par exemple, vous aurez à écrire ce genre de code (à l'aide de
import static
) :Rappelez-vous Mockito vous permet de vous concentrer sur les interactions entre les objets — comme c'est le plus important de la notion de programmation orientée objet — et en particulier entre l'testés et ses collaborateurs, qui va certainement se moque de lui.
OriginalL'auteur Brice
Général, nous avons simulé à l'aide de @InjectMock et nous essayons de vérifier une méthode appelée à partir de l'intérieur du cas de test de la méthode.
Voici un scénario qui donnent en général un problème.
Ce sera toujours "NoAMockException tout Mockito.vérifier"
au lieu de cela, nous devrions utiliser la suite de la vérification.
Ou si nous voulons vérifier() method2()
ensuite, nous avons pour @Maquette de la classe A à la place de @InjectMock
OriginalL'auteur Sumit Sundriyal