我的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()
,但是它什么也没做。
答案 0 :(得分:1)
这是Spring REST文档中的错误。感谢您引起我的注意。 items[].k2[].name
的文档应该足以使items[].k2
被文档化,因为它没有未文档化的内容。我已打开this issue,以便可以修复REST Docs的行为。
将字段标记为可选告诉REST Docs如果该字段不存在,则测试仍应通过。它对是否需要记录该字段没有影响。这就是为什么将字段标记为optional
不能解决该问题的原因。
您可以通过明确记录items[].k2
来解决此问题:
fieldWithPath("items[].k2").description("...")
或者,如果您不想在文档中为此字段输入任何内容,则可以告诉REST文档忽略它:
fieldWithPath("items[].k2").ignored()