respond_to
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3 (0)
- 2.1.0 (2)
- 2.2.1 (0)
- 2.3.8 (0)
- 3.0.0 (0)
- 3.0.9 (32)
- 3.1.0 (4)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
respond_to(*args)
public
Accepts a block which declares a set of requests and responses for the HttpMock to respond to in the following format:
mock.http_method(path, request_headers = {}, body = nil, status = 200, response_headers = {})
Example
@matz = { :id => 1, :name => "Matz" }.to_xml(:root => "person") ActiveResource::HttpMock.respond_to do |mock| mock.post "/people.xml", {}, @matz, 201, "Location" => "/people/1.xml" mock.get "/people/1.xml", {}, @matz mock.put "/people/1.xml", {}, nil, 204 mock.delete "/people/1.xml", {}, nil, 200 end
Alternatively, accepts a hash of {Request => Response} pairs allowing you to generate these the following format:
ActiveResource::Request.new(method, path, body, request_headers) ActiveResource::Response.new(body, status, response_headers)
Example
Request.new(:#{method}, path, nil, request_headers)
@matz = { :id => 1, :name => "Matz" }.to_xml(:root => "person") create_matz = ActiveResource::Request.new(:post, '/people.xml', @matz, {}) created_response = ActiveResource::Response.new("", 201, {"Location" => "/people/1.xml"}) get_matz = ActiveResource::Request.new(:get, '/people/1.xml', nil) ok_response = ActiveResource::Response.new("", 200, {}) pairs = {create_matz => created_response, get_matz => ok_response} ActiveResource::HttpMock.respond_to(pairs)
Note, by default, every time you call respond_to, any previous request and response pairs stored in HttpMock will be deleted giving you a clean slate to work on.
If you want to override this behaviour, pass in false as the last argument to respond_to
Example
ActiveResource::HttpMock.respond_to do |mock| mock.send(:get, "/people/1", {}, "XML1") end ActiveResource::HttpMock.responses.length #=> 1 ActiveResource::HttpMock.respond_to(false) do |mock| mock.send(:get, "/people/2", {}, "XML2") end ActiveResource::HttpMock.responses.length #=> 2
This also works with passing in generated pairs of requests and responses, again, just pass in false as the last argument:
Example
ActiveResource::HttpMock.respond_to do |mock| mock.send(:get, "/people/1", {}, "XML1") end ActiveResource::HttpMock.responses.length #=> 1 get_matz = ActiveResource::Request.new(:get, '/people/1.xml', nil) ok_response = ActiveResource::Response.new("", 200, {}) pairs = {get_matz => ok_response} ActiveResource::HttpMock.respond_to(pairs, false) ActiveResource::HttpMock.responses.length #=> 2