Rswag схема не сбой для недопустимых свойств объекта в массиве - PullRequest
0 голосов
/ 21 января 2019

У меня есть следующий тест rswag:

  response '200', 'response with array of objects' do
    schema type: :array,
      items: {
        type: :object,
        properties: {
          expected_id: { type: "integer", format: "int32" },
        }
      }

      run_test!
  end

Мой API отвечает JSON:

[
  "invalid_key": 1,
  "invalid_key": 2
]

Другими словами, недопустимый ответ в соответствии с приведенной выше схемой.

Однако тест не не пройден.Это неожиданно.

С другой стороны, если мой API отвечает массивом нулевых значений: "[null]" Я получаю ожидаемый ответ:

 Failure/Error: test.run

 Rswag::Specs::UnexpectedResponse:
   Expected response body to match schema: The property '#/0' of type null did not match the following type: object in schema 19e6c168-1da4-58a6-93fc-a33d9d91233a

Итак, мой тест проверяет наличие массива объектов, но не проверяет, что свойства во вложенных объектах соответствуют ожидаемым.Как мне сделать так, чтобы он также проверял свойства?

1 Ответ

0 голосов
/ 22 января 2019

В моей схеме отсутствует предложение required:

schema type: :array,
  items: {
    type: :object,
    properties: {
      expected_id: { type: "integer", format: "int32" },
    }
    required: ['expected_id'] # <- this was missing
  }

Это приводит к ошибке теста, если в ответе, который генерирует моя конечная точка, нет ключа expected_id.

...