Bry*_* M. 13 ruby web-services http
我正在开发一个可以访问Web服务的应用程序.我想开发一个代理类,它返回来自服务的虚假响应,所以在我开发/测试应用程序的其他部分时,我不必经常遇到请求.
我的应用程序期望通过Net :: HTTP生成响应.
response = Net::HTTP.get(URI.parse('http://foo.com'))
case response
when Net::HTTPOK
# do something fun
when Net::HTTPUnauthorized
# you get the idea
Run Code Online (Sandbox Code Playgroud)
我怎样才能制作一个响应对象,给它所有正确的标题,返回一个正文字符串等?
response = ProxyClass.response_object
case response
when Net::HTTPOk
# my app doesn't know it's being lied to
Run Code Online (Sandbox Code Playgroud)
谢谢.
jpa*_*kal 14
使用Net :: HTTP直接推送自己的假响应实际上并不难.这是一个带有cookie标题的简单200 OK:
def fake_response
net_http_resp = Net::HTTPResponse.new(1.0, 200, "OK")
net_http_resp.add_field 'Set-Cookie', 'Monster'
RestClient::Response.create("Body goes here", net_http_resp, nil)
end
Run Code Online (Sandbox Code Playgroud)
由于我们很少有人使用原始Net :: HTTP,(可选)最后一行将其包装为a RestClient::Response
,然后可以将其存入RestClient:
stub(RestClient).post(anything) { fake_response }
Run Code Online (Sandbox Code Playgroud)