Я работаю над камнем Ruby on Rails, и я пытаюсь использовать webmock, потому что мне нужно взаимодействовать (и тестировать) внешний API, который не под моим контролем.Webmock не отвечает на запрос заглушки с запросом
Итак, вот фрагмент кода, который находится в before(:each)
, потому что я был гася его там:
before do
uri = URI.join(client.class.base_uri, DataComApi::ApiURI.search_contact).to_s
stub_request(
:get,
uri
).with(
query: hash_including({
'pageSize' => 0,
'offset' => 0
})
).to_return(
body: FactoryGirl.build(
:data_com_search_contact_response,
totalHits: 0
).to_json
)
# DEBUG
require 'httparty'
HTTParty.get(
uri,
{
query: {
offset: 0,
pageSize: 0
}
}
)
end
И здесь вы можете увидеть выход консольной rspec
команды:
3) DataComApi::Client#search_contact returns instance of SearchContact
Failure/Error: HTTParty.get(
WebMock::NetConnectNotAllowedError:
Real HTTP connections are disabled. Unregistered request: GET https://www.jigsaw.com/rest/searchContact.json?offset=0&pageSize=0
You can stub this request with the following snippet:
stub_request(:get, "https://www.jigsaw.com/rest/searchContact.json?offset=0&pageSize=0").
to_return(:status => 200, :body => "", :headers => {})
registered request stubs:
stub_request(:get, "https://www.jigsaw.com/rest/searchContact.json with query params hash_including({"offset"=>0, "pageSize"=>0})")
============================================================
# ./spec/models/client_spec.rb:65:in `block (3 levels) in <top (r
Если удалить ключ :query
как на HTTParty.get
, так и в stub_request
, он работает, но мне нужны эти ключи и значения для проверки API.
Я испытал даже замену в stub_request
, uri
с /searchContact.json/
, но имел такую же проблему.
Здесь вы можете найти GIST