Spring Restdocs 响应负载包含可选的空对象列表
Spring Restdocs response payload contains optional empty list of objects
我的 JSON 响应负载如下所示:
{
"count": 2,
"items": [
{
"k1": "v1",
"k2": []
},
{
"k1": "v2",
"k2": [
{
"name": "joe"
},
{
"name": "alice"
}
]
}
]
}
当我如下编写 Restdocs 时,我收到一个错误,抱怨 items[].k2 = []
没有记录。
responseFields(
fieldWithPath("count").description("..."),
fieldWithPath("items[].k1").description("..."),
fieldWithPath("items[].k2[].name").description("...")
)
我试着写 fieldWithPath("items[].k2[].name").description("...").optional()
,但它什么也没做。
这是 Spring REST 文档中的错误。谢谢你让我注意到它。记录 items[].k2[].name
应该足以使 items[].k2
被视为已记录,因为它没有未记录的内容。我已经打开 this issue,因此可以修复 REST Docs 的行为。
将字段标记为可选字段告诉 REST Docs,如果该字段不存在,测试仍应通过。它对是否需要记录该字段没有影响。这就是为什么将字段标记为 optional
无法解决该问题的原因。
您可以通过显式记录 items[].k2
:
来解决该问题
fieldWithPath("items[].k2").description("...")
或者,如果您不想在文档中为该字段添加条目,您可以告诉 REST Docs 忽略它:
fieldWithPath("items[].k2").ignored()
我的 JSON 响应负载如下所示:
{
"count": 2,
"items": [
{
"k1": "v1",
"k2": []
},
{
"k1": "v2",
"k2": [
{
"name": "joe"
},
{
"name": "alice"
}
]
}
]
}
当我如下编写 Restdocs 时,我收到一个错误,抱怨 items[].k2 = []
没有记录。
responseFields(
fieldWithPath("count").description("..."),
fieldWithPath("items[].k1").description("..."),
fieldWithPath("items[].k2[].name").description("...")
)
我试着写 fieldWithPath("items[].k2[].name").description("...").optional()
,但它什么也没做。
这是 Spring REST 文档中的错误。谢谢你让我注意到它。记录 items[].k2[].name
应该足以使 items[].k2
被视为已记录,因为它没有未记录的内容。我已经打开 this issue,因此可以修复 REST Docs 的行为。
将字段标记为可选字段告诉 REST Docs,如果该字段不存在,测试仍应通过。它对是否需要记录该字段没有影响。这就是为什么将字段标记为 optional
无法解决该问题的原因。
您可以通过显式记录 items[].k2
:
fieldWithPath("items[].k2").description("...")
或者,如果您不想在文档中为该字段添加条目,您可以告诉 REST Docs 忽略它:
fieldWithPath("items[].k2").ignored()