Разрешить содержимое массива в сравнении с eq в тесте rspec - PullRequest
1 голос
/ 05 апреля 2019

У меня есть API-интерфейс GraphQL, использующий Ruby (на Rails), и я сталкивался с ситуацией, когда при написании тестов запросов для поддержания высокой читаемости следует принимать массив для любого содержимого в сравнении eq.

Вот так:

         expect(json_response).to eq({
            data: {
              Post: {
                PostId: nil,
                wasUpdated: false,
                errors[<Any error acceptet here>]
              }
            }
          })

Я пробовал с: errors[*] ... не сработало.

Позвольте мне провести вас через это.Это общий тест, чтобы увидеть, что PostId: nil и wasUpdated: false И массив ошибок возвращается при возникновении некоторой ошибки.Поскольку это общий сбойный тест, не имеет смысла указывать, какая конкретная ошибка возвращается.

Отсюда мой вопрос;Как мне написать, чтобы учесть все вышеперечисленное, ожидаемое НО в массиве ошибок что-нибудь идет?

1 Ответ

3 голосов
/ 05 апреля 2019

Вы можете использовать состав RSpec, чтобы помочь с этим Документы

В этом случае ваш тест будет выглядеть так:

expect(json_response).to match({
        data: {
          Post: {
            PostId: nil,
            wasUpdated: false,
            errors: an_instance_of(Array)
          }
        }
      }) 

Рабочий пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...