ruby-on-rails - stub HTTP Party 请求以运行 Specs

标签 ruby-on-rails ruby rspec mocking

我需要对我的 HTTP Party 请求 stub 以运行我的规范,并且我必须存储从 parsed_response 获得的事务 ID。这是我的 stub

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={}>

我需要从字段中存储交易ID

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

我从那里得到空值。任何人都可以帮我修改我的 stub 响应,以便我可以保存事务 ID

PS:如果我检查我得到的响应文件

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

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

最佳答案

您发送的负载格式错误:

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"}
)

关于ruby-on-rails - stub HTTP Party 请求以运行 Specs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51224912/

相关文章:

ruby-on-rails - 如何将特定事件从 Rails 记录到日志文件?

ruby - 什么都不知道....在尝试 ri String#upcase Ruby 时

rspec - 如何配置 Capybara 在 dockerized Selenium Grid 中运行测试?

ruby-on-rails - 为什么这个 rspec 测试在应该通过时却失败了?

ruby-on-rails - 如何使用 rspec 正确测试 ActiveJob 的 retry_on 方法?

ruby-on-rails - 如何使用不同的参数多次运行 rspec 类

ruby - 惯用 ruby : data structure transformation

ruby-on-rails - RSpec,期望随着多个值的变化而变化

ruby-on-rails - 如何重构此 Ruby 和 Rails 代码?

ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1