当前位置: 首页 > 知识库问答 >
问题:

Hamcrest和JsonPath的SpringMVC测试:如何计算身体尺寸?(不计算成员)

范玄裳
2023-03-14

我的工作对象是:

  • SpringMVC测试
  • 汉克雷斯特
  • JsonPath

我对服务器的响应有以下几点看法:

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {Content-Type=[application/json;charset=UTF-8]}
     Content type = application/json;charset=UTF-8
             Body = {
  "id" : "100",
  "nombre" : "Jesús Você",
  "apellido" : "Mão Nuñez",
  "fecha" : "1977-12-08"
}
    Forwarded URL = null
   Redirected URL = null

以下工作符合预期(有效):

 .andExpect(jsonPath("$").exists())
 .andExpect(jsonPath("$", notNullValue()))
 .andExpect(jsonPath("$", isA(LinkedHashMap.class)))

 .andExpect(jsonPath("$.*").exists())
 .andExpect(jsonPath("$.*", notNullValue()))
 .andExpect(jsonPath("$.*", isA(JSONArray.class)))
 .andExpect(jsonPath("$.*", hasSize(is(4))))

我需要测试("$")是1。确认存在1项。它再次确认以下内容:

Body = {
      "id" : "100",
      "nombre" : "Jesús Você",
      "apellido" : "Mão Nuñez",
      "fecha" : "1977-12-08"
    }

我试过:

.andExpect(jsonPath("$", hasSize(is(1))))

观察$$之间的差异* ,对于后者,我知道它计算字段的数量。但从前者我总能得到:

java.lang.AssertionError: JSON path "$"
Expected: a collection with size is <1>
     but: was <{id=100, nombre=Jesús Você, apellido=Mão Nuñez, fecha=1977-12-08}>
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18

“似乎”数据不是一个集合,但请记住。andExpect(jsonPath(“$”,isA(LinkedHashMap.class))pass。我有些困惑。

因此有可能测试(“$”)为1。?如果是,怎么做?。

我读过jsonpath的count成员?

并说:

测试数组大小:jsonPath(“$”,hasSize(4))

要计数对象的成员:jsonPath("$.*", 有大小(4))

我返回的数据不是数组,而是LinkedHashMap。因为如果我使用。andExpect(jsonPath(“$”)。isArray())我得到:

java.lang.AssertionError: Expected an array at JSON path "$" but found: {id=100, nombre=Jesús Você, apellido=Mão Nuñez, fecha=1977-12-08}
Expected: an instance of java.util.List
     but: <{id=100, nombre=Jesús Você, apellido=Mão Nuñez, fecha=1977-12-08}> is a java.util.LinkedHashMap

顺便说一句:. and预期(jsonPath("$. *").isArray())通过。


共有1个答案

白弘伟
2023-03-14

要验证地图的大小,而不是:

.andExpect(jsonPath("$", hasSize(1)))

您应该使用:

.andExpect(jsonPath("$", aMapWithSize(1)))

注意:请与org联系。汉克雷斯特。Matchers javadoc

 类似资料:
  • 是否可以使用JsonPath计算成员数? 使用spring mvc测试,我正在测试一个生成 具有 我想确保生成的json中没有其他成员。希望通过使用jsonPath计算它们。可能吗?也欢迎其他解决方案。

  • 在卷积神经网络中,如何知道特定conv层的输出?(我正在使用keras构建CNN模型) 例如,如果我使用一维conv层,其中number_of_filters=20,kernel_size=10,input_shape(500,1) 如果我使用的是二维conv层,其中\u过滤器的数量=64,内核大小=(5100),输入\u形状=(5720,1)(高度,宽度,通道) 以上两个conv层的输出数量是多

  • 我希望获得PDF中每个页面的准确大小,作为我将创建的PDF单元测试的一部分。当我处理每个文档中具有许多不同页面大小的PDF时,代码返回一个ArrayList维度。 AFAIK每个页面也可以有自己的DPI设置。 我在谷歌上搜索了很多次,但我只找到了这个答案,这只给了我部分答案,因为我仍然需要计算出每页的DPI。 PDFBox-查找页面维度

  • 问题内容: 我有一个固定的宽度和高度来调整图像大小。但是,我对此有一个问题,因为图像可以具有任何类型的尺寸比(可以是 垂直 或 水平 )。在这种情况下,固定的宽度和高度会引起问题。我想以更智能的方式计算 宽度和高度 。 例如,假设我定义了 width 1024px和height 768px 。我想调整垂直图像的尺寸 (高度1100px和宽度200px) 。因此,在我的情况下,它将调整为固定 大小(

  • 我有这个模式 列表表 [{“movie_id”:100,“gene1”:“犯罪”,“计数”:1,“id”:100},{“movie_id”:141267,“gene1”:“犯罪”,“计数”:1,“id”:141267},{“movie_id”:207932,“gene1”:“犯罪”,“计数”:1,“id”:207932},{“movie_id”:238636,“gene1”:“惊悚”,“计数”:1

  • 问题内容: 我正在使用Java绘制一些文本,但是对我来说很难计算字符串的宽度。例如:zheng中国…这个字符串要占用多长时间? 问题答案: 对于单个字符串,您可以获取给定图形字体的度量,然后使用该度量来计算字符串大小。例如: 如果您有更复杂的文本布局要求,例如在给定宽度内流动一段文本,则可以创建一个对象,例如此示例(来自docs):