Se moquant d'un appel RESTE avec MockRestServiceServer
Je suis en train d'écrire un test JUnit qui teste une méthode dans une classe d'assistance. Les appels de méthode d'une application externe à l'aide de REPOS et c'est cet appel que je suis en train de fantaisie dans le test JUnit.
La méthode d'assistance fait le RESTE appel à l'aide du Printemps RestTemplate.
Dans mon test, j'ai créer une maquette au RESTE du serveur et de se moquer de REPOS modèle et instanitiate comme ceci:
@Before
public void setUp() throws Exception {
mockServer = MockRestServiceServer.createServer(helperClass.getRestTemplate());
}
J'ai ensuite graines de la simulation de serveur de sorte qu'il devrait retourner une réponse appropriée lorsque la méthode d'assistance fait l'appel RESTE:
//response is some XML in a String
mockServer
.expect(MockRestRequestMatchers.requestTo(new URI(myURL)))
.andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
.andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
.contentType(MediaType.APPLICATION_XML)
.body(response));
Quand je lance mon test, la méthode d'assistance reçoit une réponse null à partir de l'appel RESTE il fait le test échoue.
Le RESTE de l'URL que l'aide a fait la requête params et ressemble à ceci: "http://server:port/application/resource?queryparam1=value1&queryparam2=valeur2".
J'ai essayé de mettre l'URL ("http://server:port/application/resource") à la fois avec et sans les paramètres de requête dans le "myURL" variable (pour obtenir un match pour qu'il renvoie une réponse), mais ne peut pas obtenir la simulation de serveur de retourner quoi que ce soit.
J'ai essayé de chercher des exemples de ce genre de code, mais n'ai pas encore trouvé quelque chose qui semble ressembler à mon scénario.
Printemps version 4.1.7.
Merci d'avance pour toute aide.
requestTo
.
OriginalL'auteur GarlicBread | 2016-06-13
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez une instance de
MockRestServiceServer
vous devez utiliser instance existante deRestTemplate
qui est utilisé par votre code de production. Donc, essayez d'injecterRestTemplate
dans votre test, et de l'utiliser lors de l'appel deMockRestServiceServer.createServer
- ne pas créer de nouveauxRestTemplate
dans vos tests.Je suis confronté à des problèmes avec les tests RestTemplate. Cependant, dans mon cas, je n'ai pas accès à la RestTemplate instance. Le code dans ma classe helper est comme
new RestTemplate().exchange(uri,HttpMethod.GET,...)
. Comment puis-je tester cette.OriginalL'auteur Rafal G.
Semble que vous essayez de tester le reste-client, le reste-server doit être testé dans un autre endroit.
Vous utilisez RestTemplate -> Pour appeler le service. Alors, essayé de se moquer de RestTemplate et à son appel.
et de Service en Vertu de la Classe de Test
Disons, Service a une méthode à tester comme
Ensuite, pour tester filterData méthode, vous devez simuler la réponse de restTemplate appel comme
OriginalL'auteur VinhNT