Заглушка запроса HTTP Party для запуска спецификации

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

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"]

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

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

response.success? ----> true
response.parsed_response --> "{'Success': { 'TransactionId' => '123456789' }}"

response.parsed_response['Success']  ---> "Success"

1 ответ

Вы отправляете данные в неправильном формате:

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"}
)
Другие вопросы по тегам