JsonPath JUnit caractère d'échappement pour les points
J'ai un champ json qui est appelé modèle.bienvenue.e-mail et je suis en train d'écrire un test unitaire qui vérifie si le champ est présent dans la réponse du serveur, mais je ne peux pas trouver une échappatoire pour les points dans le nom du champ.
Le code de mon test est :
@Test
public void testEmailTemplates() throws Exception {
mockMvc.perform(get("/emailTemplates")
.contentType(MediaType.APPLICATION_JSON)
.locale(Locale.UK)
.accept(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.template.welcome.email").exists())
.andExpect(redirectedUrl(null))
.andExpect(forwardedUrl(null));
}
Mais j'obtiens l'exception suivante, parce que les points sont interprétés comme des chemins:
java.lang.AssertionError: No value for JSON path: $.template.welcome.email, exception: invalid path
at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:74)
at org.springframework.test.util.JsonPathExpectationsHelper.exists(JsonPathExpectationsHelper.java:121)
at org.springframework.test.web.servlet.result.JsonPathResultMatchers$3.match(JsonPathResultMatchers.java:77)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:141)
at
Savez-vous tout caractère d'échappement pour le jsonPath?
OriginalL'auteur daniele | 2013-11-01
Vous devez vous connecter pour publier un commentaire.
Comme Ida souligné:
Ohhh, c'est pourquoi mon chemin (avec la séquence d'échappement barre oblique) ne fonctionne pas!
Oui c'est possible, voir Ida réponse
J'ai mis à jour la accepté de répondre. Je voudrais le supprimer tout à fait quand/si OP accepter la réponse correcte.
Et comment faire dans le groovy?
OriginalL'auteur Roman Konoval
Utiliser des parenthèses et des guillemets autour de votre champ. Par exemple, si votre domaine est valide.clé.avec.dot
Se réfèrent à elle comme
['valid.key.with.dot']
et dans JsonPath, essayezVoir ce fil: https://groups.google.com/forum/#!topic/jsonpath/7YvgXWP1_7Y
Juste fait cela dans le SOAP UI trop JsonPath Match. Fonctionne parfaitement!
OriginalL'auteur Ida
Ces jours-ci (par exemple,
io.rest-assured.json-path:3.0.1
) la notation semble être sans parenthèses:J'ai constaté le correspondant de l'indice dans cette Git problème.
OriginalL'auteur Michael Jess