Test RESTful Services avec RestTemplate
Dans mon application j'ai beaucoup de REPOS - Services. J'ai écrit les tests pour tous les services avec:
org.springframework.web.client.RestTemplate
Un Service REST invokation par exemple ressemble à ceci:
final String loginResponse = restTemplate.exchange("http://localhost:8080/api/v1/xy", HttpMethod.POST, httpEntity, String.class)
.getBody();
et j'ai vérifier le corps de la réponse par la suite - tout fonctionne très bien.
L'inconvénient est que l'application pour assurer doit être démarré pour invoquer le RESTE des Services.
Ma question maintenant serait de savoir comment je peux le faire dans mon JUnit- @méthodes d'Essai?
C'est un Printemps de Démarrage de l'application (avec tomcat intégré).
Merci pour l'aide!
source d'informationauteur quma
Vous devez vous connecter pour publier un commentaire.
Il y a de bonnes chapitre à ce sujet dans la documentation, je vous suggère de le lire, pour comprendre pleinement ce que vous pouvez faire.
J'aime utiliser
@IntegrationTest
avec une configuration personnalisée depuis que démarre l'ensemble du serveur et permet de tester le système complet. Si vous souhaitez remplacer certaines parties du système avec des objets fantaisie que vous pouvez faire que par l'exclusion de certaines configurations ou les haricots et les remplacer par votre propre.Voici un petit exemple. J'ai laissé de côté l'
MessageService
interface parce que c'est évident à partir deIndexController
ce qu'il fait, et c'est par défaut de mise en œuvre -DefaultMessageService
- parce qu'il n'est pas pertinent.Ce qu'il fait est qu'il tourne l'ensemble de l'application, moins le
DefaultMessageService
mais avec son propreMessageService
à la place. Il utilise ensuiteRestTemplate
de problème réel les requêtes HTTP de l'application en cours d'exécution dans le cas du test.Les classes d'Application:
IntegrationTestDemo.java:
IndexController.java:
Classes de Test:
IntegrationTestDemoTest.java:
TestConfig.java:
Si vous n'étiez pas à la recherche d'un bout à l' (integretion) de test, le
MockRestServiceServer
pourrait vous aider. J'ai trouvé qu'il est très utile de dissocier mon cas de test à partir d'un réel service.Printemps doc dit:
Ici est la officiel doc
Une astuce de plus, c'est que,
requestTo
ne peuvent pas être importés automatiquementC'est une méthode statique de
org.springframework.test.web.client.match.MockRestRequestMatchers
Puisque vous êtes à l'aide de Spring MVC pour le RESTE, je vous conseille d'utiliser les installations d'essais fournis par l'instanciation de MockMVC() - activation de tests, tels que:
Ce test permettra de tester une interface REST sans déployer. Plus précisément, si exactement 8 utilisateurs sont retournés et le premier a le champs 'id', 'alias' et 'nom'.
La jsonPath affirmations besoin de deux dépendances:
Et probablement aussi: