Puis-je retarder un écrasé méthode de réponse avec Mockito?
Je suis en train d'écrire des tests unitaires maintenant. J'ai besoin de simuler à long terme de la méthode avec Mockito pour tester ma mise en œuvre de la gestion des timeouts. Est-il possible avec Mockito?
Quelque chose comme ceci:
when(mockedService.doSomething(a, b)).thenReturn(c).after(5000L);
- Sur notre projet, nous avons créé un
DelayedAnswer
qui a enveloppé un autreAnswer
et invoqué après le délai spécifié. C'est ecentially ce KL posté.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement mettre le fil de sommeil pour la durée souhaitée. Attention tho - de telles choses peut vraiment ralentir votre test automatisé d'exécution, de sorte que vous pouvez isoler de tels tests dans une suite séparée
Il devrait ressembler à ceci:
De mockito 2.8.44, org.mockito.interne.stubbing.réponses.AnswersWithDelay est disponible à cet effet. Voici un exemple d'utilisation
J'ai créé un utils pour cela:
et dans votre cas de test suffit d'utiliser:
Beaucoup mieux pour les tests Unitaires est de créer de la méthode qui appelle Thread actuel.sleep(long l) et puis se moquer de cette méthode.
Avec cela, vous pouvez injecter votre test impressionnant de comportement à l'origine de ce test aura l'impression qu'il est en attente pour aussi longtemps que vous le souhaitez.
Avec cela, vous pouvez exécuter beaucoup de test en clin d'œil et encore tester différents temps liées au scénario.
Avant d'utiliser le présent, mon UnitTest a couru pendant six minutes. Maintenant ses en vertu de 200ms.
Mais la meilleure approche consiste à injecter du dormeur et puis s'en moquer. Donc, dans vos tests, vous n'allez pas dormir. Ensuite, vous tests unitaires va courir vite que l'éclair.