Wie zu verwenden MockMvcResultMatchers.jsonPath
MvcResult result = this.mockMvc.perform(
MockMvcRequestBuilders.get(mockUrl))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType("application/ json;charset=UTF-8"))
.andDo(MockMvcResultHandlers.print())
Geben Sie mir die folgenden:
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[application/json;charset=UTF-8]}
Content type = application/json;charset=UTF-8
Body = {"version":"0.1"}
Forwarded URL = null
Redirected URL = null
Cookies = []
Jedoch Tests mit
MvcResult result = this.mockMvc.perform(
MockMvcRequestBuilders.get(mockUrl))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType("application/ json;charset=UTF-8"))
.andExpect(jsonPath("$.version").value("0.1"))
gibt die folgende Fehlermeldung zurück:
java.lang.AssertionError: No value at JSON path "$.version", exception: net/minidev/json/writer/JsonReaderI
at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:245)
at org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:99)
at org.springframework.test.web.servlet.result.JsonPathResultMatchers$2.match(JsonPathResultMatchers.java:99)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171)
at com.vmware.skyscraper.rts.runbooks.RunbookControllerTest.testGetSingleRunbook(RunbookControllerTest.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Wie verwende ich jsonPath?
Können Sie belegen, der rest die Ausnahme? Anyway, sieht aus wie Sie haben einige zusätzliche Räume in
Hinzugefügt, der rest die Ausnahme. Die zusätzlichen Räume war ein Tippfehler in Stackoverflow. Tut mir Leid, dass.
Haben Sie gefunden, die Antwort auf Ihr problem?
NÖ. Noch nicht. Keines der vorhandenen Vorschläge scheinen zu funktionieren.
Ich bin immer diese Art von Fehler mit Spring Boot 1.5.7
application/json
Hinzugefügt, der rest die Ausnahme. Die zusätzlichen Räume war ein Tippfehler in Stackoverflow. Tut mir Leid, dass.
Haben Sie gefunden, die Antwort auf Ihr problem?
NÖ. Noch nicht. Keines der vorhandenen Vorschläge scheinen zu funktionieren.
Ich bin immer diese Art von Fehler mit Spring Boot 1.5.7
InformationsquelleAutor Pradeep Vairamani | 2017-03-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen, um passieren die Matcher der
jsonPath
Methode. Zum Beispiel.Referenzen:
http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/test/web/servlet/result/MockMvcResultMatchers.html#jsonPath(java.lang.String,%20org.hamcrest.Matcher)
https://www.petrikainulainen.net/programming/spring-framework/integration-testing-of-spring-mvc-applications-write-clean-assertions-with-jsonpath/
SpringMVC/mockMVC/jsonpath vergleichen Liste von strings
InformationsquelleAutor Jose Martinez
Dein code funktioniert bei mir einwandfrei. Ich bin mit Jackson zu analysieren die Fälle und das ist wahrscheinlich auch der einzige Unterschied. "Check my code:
Ergebnis Klasse:
Controller:
Test:
Antwort:
Kann ich nur empfehlen, zu versuchen, zu ändern die Json-parser-Bibliothek, die Sie verwenden. Ansonsten versuchen Sie den code zu aktualisieren, mit allen teilen, die benötigt wird, um eine einfache, minimale und reproduzierbare Beispiel für dein problem.
Ich benutze spring boot, jackson ist der standard-Bibliothek, die die Umwandlung. Es wird automatisch von spring-boot-starter-web, denke ich.
InformationsquelleAutor sm4
Alle Kredit für diese Antwort geht an @pramodh (Versteckt im OP-Kommentare)
Ich hatte das exakt gleiche problem und die Installation seiner empfohlenen Abhängigkeiten festen alles.
InformationsquelleAutor coltonfranco