java - Spring Restdocs 响应负载包含可选的空对象列表

标签 java spring spring-restdocs

我的 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/

相关文章:

java - Spring Boot创建bean 2次

kotlin - 在 Spring Rest Docs 中添加基本 url 的路径?

java - Spring Security登录错误: HTTP Status 404 -/j_spring_security_check

java - Spring Boot 将 web 应用程序打包为 .jar

java - 是否可以将 spring rest 文档与 spock 一起使用

java - Spring Rest Doc 不生成 html

java - 更改 Eclipse Getters Setters 语法

java - 类和子类 - 您如何跟踪它们?

java - 类无法解析为类型

java - 如何在 Java 程序中使用 «extend»?