Полезная нагрузка ответа Spring Restdocs содержит необязательный пустой список объектов - PullRequest
0 голосов
/ 20 июня 2019

Моя полезная нагрузка ответа 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(), но ничего не получилось.

1 Ответ

1 голос
/ 20 июня 2019

Это ошибка в Spring REST Docs. Спасибо, что обратили на это мое внимание. Документирование items[].k2[].name должно быть достаточным для того, чтобы items[].k2 считалось документированным, поскольку оно не имеет недокументированного содержания. Я открыл эту проблему , чтобы поведение REST Docs можно было исправить.

Пометка поля как необязательного указывает REST Docs, что тест все равно должен пройти, если поле отсутствует. Это не влияет на то, нужно ли задокументировать поле. Вот почему пометка поля как optional не обошла проблему.

Вы можете обойти эту проблему, явно задокументировав items[].k2:

fieldWithPath("items[].k2").description("...")

В качестве альтернативы, если вы не хотите, чтобы в вашей документации была запись для этого поля, вы можете указать REST Docs игнорировать ее:

fieldWithPath("items[].k2").ignored()
...