Остановка запроса HTTP-партии для запуска спецификаций

sumanth madishetty спросил: 13 июня 2018 в 02:39 в: ruby-on-rails

Мне нужно заглушить запрос HTTP-партии для запуска моей спецификации, и я должен сохранить идентификатор транзакции, который я получил от parsed_response.Here мой заглушка

stub_request(:post, {MYURL).to_return(status: 200, body: "{'Success': { 'TransactionId' => '123456789' }}", headers: {})

Я получаю ответ на запрос как

#<HTTParty::Response:0x5d51240 parsed_response="{'Success': { 'TransactionId' => '123456789' }}", @response=#<Net::HTTPOK 200  readbody=true>, @headers={}>

Мне нужно сохранить транзакцию из поля

response.parsed_response['Success']["perfiosTransactionId"]

, я получаю null оттуда. Может ли кто-нибудь помочь мне изменить мой ответ на заглушку, чтобы я мог получить сохраненную транзакцию.

PS: Если я проверю записи ответа, я получаю


1 ответ

Зелёный ответил: 13 июня 2018 в 03:33

Вы отправляете полезную нагрузку в неправильном формате:

stub_request(
  :post, 
  {MYURL}
).to_return(
  status: 200, 
  body: '{"Success": { "TransactionId": "123456789" }}', # valid json string
  headers: {"Content-Type" => "application/json"}
)

Это должен быть действительный json-объект, а не хэш-код ruby.

Вот еще один способ:

stub_request(
  :post, 
  {MYURL}
).to_return(
  status: 200, 
  body: {
    "Success": { "TransactionId" => "123456789" }
  }.to_json, # valid json string
  headers: {"Content-Type" => "application/json"}
)
sumanth madishetty ответил: 13 июня 2018 в 03:28
Пробовал, как вы и предложили. Но это не работает, если я проверяю response.parsed_response ['Success'], он возвращает строку "Sucess" & если я проверяю response.parsed_response ['Success'] ["perfiosTransactionId"], он возвращает nil
Зелёный ответил: 13 июня 2018 в 03:34
Проверьте мой обновленный ответ, вам нужно установить заголовки json.
sumanth madishetty ответил: 13 июня 2018 в 03:51
Да, это сработало. Спасибо, объясните, как работает заголовок

Дополнительное видео по вопросу: Остановка запроса HTTP-партии для запуска спецификаций

RailsCasts - #257 Request Specs and Capybara

How to organize RSpec config in Ruby on Rails project?

RSpec Tutorial (Level 1)