【发布时间】:2018-12-27 10:31:13
【问题描述】:
我创建了一个发出 HTTParty 获取请求的函数。它会引发我需要测试的自定义错误消息。我试图在测试中使用 Webmock 来存根请求,但它引发了<Net::OpenTimeout>。如果 url 是动态构造的,我如何存根 get 请求?
def function(a , b)
# some logic , dynamic url constructed
response = HTTParty.get(url, headers: {"Content-Type" =>
"application/json"})
if response.code != 200
raise CustomError.new <<~EOF
Error while fetching job details.
Response code: #{response.code}
Response body: #{response.body}
EOF
end
JSON.parse(response.body)
为了测试
def test_function
WebMock.stub_request(:get, url).with(:headers => {'Content-
Type'=>'application/json'}).to_return(:status => 500)
# HTTParty.stub(get: fake_response)
err = assert_raises CustumError do
c.function(a , b)
end
【问题讨论】:
-
什么是
# some logic , dynamic url constructed?这些信息可能是解决方案的基础。 -
网址有一个基本形式,附加了 a 和 b,例如。 example.com/v1/#{a}
-
你能不能只显示代码,而不是仅仅试图总结代码的作用?我很容易误解该描述,即使我正确解释了它,也许您的代码实际上并没有按照您的想法进行。
-
正如下面已经回答的那样,一种可能的解决方案可能是将请求 URL 与正则表达式匹配。但在不真正知道您正在生成什么模式的情况下,我无法给出具体答案,也无法验证它是否有效。
标签: ruby minitest httparty webmock