#ruby-on-rails #ruby #rspec #graphql
#ruby-on-rails #ruby #rspec #graphql
Вопрос:
У меня есть GraphQL API, использующий 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:
Вы можете использовать RSpec composition, чтобы помочь с этими документами
В этом случае ваш тест будет выглядеть так:
expect(json_response).to match({
data: {
Post: {
PostId: nil,
wasUpdated: false,
errors: an_instance_of(Array)
}
}
})