我的 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 文档,即使该字段不存在,测试仍应通过。它对于该字段是否需要记录没有影响。这就是为什么将该字段标记为可选
并不能解决该问题。
您可以通过显式记录 items[].k2
来解决该问题:
fieldWithPath("items[].k2").description("...")
或者,如果您不想在文档中添加该字段的条目,您可以告诉 REST Docs 忽略它:
fieldWithPath("items[].k2").ignored()
关于java - Spring Restdocs 响应负载包含可选的空对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56682527/