0

Nous avons des tests d'inter-guration sur @RestController avec un modèle commun pour vérifier qu'une expression Xpath existe et qu'un en-tête Http est défini. Mais je voudrais aller plus loin et vérifier que la valeur XPath est égale ou contenue dans l'en-tête.Spring mvc it, compare les valeurs de charge utile et d'en-tête

mvc.perform(..) 
    .andExpect(xpath("Item/@id/").isIn(header("Location"))) 

Est-il quelque chose pour cela ou devrais-je créer mon propre ResultMatcher?

Répondre

0

org.springframework.test.web.servlet.result.MockMvcResultMatchers.xpath(xpathExpress, args) est ce que vous voulez. Par exemple:

ResultActions resultActions = mvc.perform(..); 
    String location = resultActions.andReturn().getResponse().getHeader("Location"); 
    resultActions.andExpect(MockMvcResultMatchers.xpath("Item/@id/", null) 
      .string(org.hamcrest.Matchers.containsString(location))); 

Si vous devez comparer par nœud, XMLUnit for Java 2.x offre plus usefule Matcher.

+0

Ça a l'air génial, mais qu'est-ce que vous utilisez 'header (String)' methdo? –

+0

Veuillez consulter la réponse mise à jour. Vous pouvez obtenir la valeur de l'en-tête de réponse par 'MvcResult.getResponse(). GetHeader (headerName)'. –