Testing with spring-test-mvc jsonpath returns null

后端 未结 2 919
不知归路
不知归路 2021-01-06 18:43

I am using Spring\'s \"spring-test-mvc\" library to test web controllers. I have a very simple controller that returns a JSON array. Then in my test I have:

         


        
相关标签:
2条回答
  • 2021-01-06 19:23

    If you add the json path dependency to maven, or add the jar to your lib, then it will work. I think that Spring is not including the jsonPath dependency in the latest Spring 3.2.0 RC1 release. I'm guessing that this is the same for Spring-Test-MVC standalone project as well.

    Here is the dependency for Maven:

    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>0.8.1</version>
        <scope>test</scope>
    </dependency>
    

    You might also need the hamcrest library to use the jsonPath("$.test").value("test")

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
    
    0 讨论(0)
  • 2021-01-06 19:44

    What does your json response body look like? You can see it by doing an .andDo(print())

    You might want to try jsonPath("$.fName").

    This is assuming that your json response is: {"fName":"first name"}

    If your response is an array then you need jsonPath("$[0].fName") for a response like: [{"fName":"first name"},{"fName":"first name #2"}]

    You can see more examples at: http://goessner.net/articles/JsonPath/

    0 讨论(0)
提交回复
热议问题