gpt4 book ai didi

ruby-on-rails - Webmock 未通过查询响应 stub 请求

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:52 26 4
gpt4 key购买 nike

我正在开发 Ruby on Rails gem,我正在尝试使用 webmock,因为我需要与不受我控制的外部 API 进行交互(和测试)。

所以,这是 before(:each) 中的代码片段,因为我把它 stub 在那里:

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

如果我在 HTTPParty.getstub_request 中删除 :query 键,它会工作,但我需要那些查询键和测试 API 的值。

我什至通过将 stub_request 中的 uri 替换为 /searchContact.json/ 进行了测试,但遇到了同样的问题。

在这里你可以找到一个 GIST

最佳答案

我自己解决了,看起来是一个错误:你必须在 webmock 中用 'query' (一个 String) stub 请求,因为 符号 不起作用。最糟糕的是查询哈希中允许使用符号。

我将其报告为错误:https://github.com/bblimke/webmock/issues/366

编辑我错了,看起来唯一的方法是:使用查询键作为符号,但是散列的值必须是字符串,否则找不到(params在查询中总是字符串)

关于ruby-on-rails - Webmock 未通过查询响应 stub 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com