如何使用MockMvcResultMatchers.jsonpath进行测试?

时间:2016-05-04 14:46:50

标签: mockito

我正在为spring mvc应用程序编写一些测试。

我得到的答复如下。

-> curl -X POST -H"Content-type:application/json; charset=utf-8" localhost:8080/mvc/addBlacklist.do -d '{"id": "1", "imsi": "test"}'

{"id":0,"imsi":"18192729090","name":"xiaoshao","monitors":null}

但是当我的测试就像这样。

Blacklist blackList = new Blacklist();
    blackList.setId(0);
    blackList.setImsi("18192729090");
    blackList.setName("xiaoshao");

    when(blacklistService.add(any())).thenReturn(blackList);

    mockMvc.perform(post("/addBlacklist")
            .content(TestUtil.convertObjectToJsonBytes(blackList))
            .contentType(TestUtil.APPLICATION_JSON_UTF8))
            .andExpect(status().is(200))
            .andExpect(jsonPath("$.imsi", is("xiaoshao")));

它会发出这样的异常。

java.lang.NoClassDefFoundError: com/jayway/jsonpath/InvalidPathException
at org.springframework.test.web.servlet.result.JsonPathResultMatchers.<init>(JsonPathResultMatchers.java:53)

2 个答案:

答案 0 :(得分:1)

您缺少测试的依赖项。把它添加到你的maven pom。

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

答案 1 :(得分:0)

使用此:

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;