加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – RSpec麻烦模拟HTTP请求

发布时间:2020-12-17 02:31:00 所属栏目:百科 来源:网络整理
导读:我如何为…编写RSpec Net::HTTP::Proxy(PROXY_HOST,PROXY_PORT).start(url.host) do |http| request = Net::HTTP::Post.new(url.path) request.form_data = {'param1' = 'blah1','param2' = 'blah2'} response = http.request(request)end 这是我得到的……
我如何为…编写RSpec

Net::HTTP::Proxy(PROXY_HOST,PROXY_PORT).start(url.host) do |http|
  request = Net::HTTP::Post.new(url.path)
  request.form_data = {'param1' => 'blah1','param2' => 'blah2'}
  response = http.request(request)
end

这是我得到的……

@mock_http = mock('http')
@mock_http.should_receive(:start).with(@url.host)
Net::HTTP.should_receive(:Proxy).with(PROXY_HOST,PROXY_PORT).and_return(@mock_http)
Net::HTTP::Post.should_receive(:new).with(@url.path).and_return(@mock_http)

然而,当尝试…

Net::HTTP::Post.should_receive(:new).with(@url.path).and_return(@mock_http)

……收到以下回复……

<Net::HTTP::Post (class)> expected :new with ("/some/path") once,but received it 0 times

一个完整的解决方案将不胜感激!

解决方法

我不确定你要测试的是什么,但是这里是如何使用webmock存根这个http请求:

在Gemfile中:

group :test do
  gem 'webmock'
end

在spec / spec_helper.rb中:

require 'webmock/rspec'
WebMock.disable_net_connect!(:allow_localhost => true)

在你的测试中:

stub_request(:post,url.host).
  with(:body => {'param1' => 'blah1','param2' => 'blah2'},to_return(:status => 200,:body => '{ insert your response body expectation here }'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读