Fir*_*DoL 3 ruby rspec ruby-on-rails webmock
我正在研究Ruby on Rails gem,并且正在尝试使用webmock,因为我需要交互(并测试)不受我控制的外部API。
所以,这是其中的片段,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
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到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
Run Code Online (Sandbox Code Playgroud)
如果我删除了:query
这两个关键HTTParty.get
和stub_request
,它的工作原理,但我需要那些查询键和值来测试API。
我测试甚至在更换stub_request
,uri
有/searchContact.json/
,但有同样的问题。
在这里您可以找到GIST
我自己解决了这个问题,似乎是一个错误:您必须在Webmock中使用'query'
(a String
)存根请求,因为Symbol
它不起作用。最糟糕的部分是查询哈希中允许使用符号。
我将其报告为错误:https : //github.com/bblimke/webmock/issues/366
编辑 我错了,看起来唯一的办法是:使用查询键作为符号,但是哈希值必须是字符串,否则将找不到它(查询中的参数始终是字符串)
归档时间: |
|
查看次数: |
5411 次 |
最近记录: |