RSpec Неполадка, высмеивающая HTTP-запрос - PullRequest
4 голосов
/ 03 февраля 2012

Как мне написать 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

Полное решение будет с благодарностью!

1 Ответ

5 голосов
/ 03 февраля 2012

Я не уверен, что именно вы пытаетесь проверить, но вот как заглушить этот http-запрос с помощью webmock:

В 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 }'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...