2017-10-11 3 views
0

J'essaie d'écrire un test unitaire, et la classe que je teste reçoit un ObjectMapper mocké lors de sa création ... Mais le code que j'essaie de tester est une méthode qui crée ensuite un ObjectReader à partir de ce mappeur (qui Maintenant, je crois, ce que j'ai probablement besoin de faire dans mon test ... est d'avoir quelque chose qui se moque d'un lecteur quand on le demande ... mais Je ne sais pas comment je pourrais le faire ...Se moquer d'un ObjectReader?

je me moque de mon mappeur comme ceci:

ObjectMapper mockMapper = mock(ObjectMapper.class); 

puis i n la classe ACTUAL qui fait le travail normalement, je crée le lecteur comme suit:

ObjectReader objectReader = mapper.reader(ObjectNode.class); 

Maintenant, je suppose que le problème est ici que le mappeur est moqué, donc alors lorsque le code tente de créer le lecteur, il est VRAIMENT nul.

donc dans mon test, je sais que je dois sans doute faire quelque chose comme ceci:

when(mockMapper.reader(ObjectNode.class)).thenReturn(mock(ObjectReader(ObjectNode.class))); 

mais je sais que ce n'est pas droit (parce qu'il ne fonctionne pas) - et je besoin d'un peu d'indications sur le faire fonctionner ...

Toute l'aide est appréciée ici. Merci!

+0

Vous voulez expliquer la signification de 'ça ne marche pas'? Aussi, que voulez-vous affirmer dans votre test? –

+0

Je l'ai fait, j'ai dit que le lecteur serait évidemment nul ... – MickeyThreeSheds

+0

[1] Assurez-vous que votre 'when (...). ThenReturn (...)' a été appelé avant d'exécuter 'mapper.reader (. ..) '. [2] Placez un point d'arrêt sur 'ObjectReader objectReader = mapper.reader (ObjectNode.class);' line, inspectez la valeur 'mapper', assurez-vous qu'il s'agit d'un objet fantaisie. –

Répondre

0

Si vous pouviez éditer votre question pour inclure votre code sous test, cela clarifierait la question. J'essaie de répondre à ce que je comprends de votre question. Vous pouvez créer une véritable objet de la classe ObjectReader ou vous pouvez railler comme

ObjectReader objectReader = mock(ObjectReader.class); 

utiliser maintenant Mockito pour retourner ObjectReader classe.

when(mockMapper.reader(any(ObjectNode.class))).thenReturn(objectReader));