Methods
A
C
L
R
Classes and Modules
Constants
VERSION = '1.3.0'
 

Returns the version string for the copy of FakeWeb you have loaded.

Class Public methods
allow_net_connect=(allowed)

Enables or disables real HTTP connections for requests that don’t match registered URIs.

If you set FakeWeb.allow_net_connect = false and subsequently try to make a request to a URI you haven’t registered with #register_uri, a NetConnectNotAllowedError will be raised. This is handy when you want to make sure your tests are self-contained, or want to catch the scenario when a URI is changed in implementation code without a corresponding test change.

When FakeWeb.allow_net_connect = true (the default), requests to URIs not stubbed with FakeWeb are passed through to Net::HTTP.

If you assign a String, URI, or Regexp object, unstubbed requests will be allowed if they match that value. This is useful when you want to allow access to a local server for integration testing, while still preventing your tests from using the internet.

    # File lib/fake_web.rb, line 41
41:   def self.allow_net_connect=(allowed)
42:     case allowed
43:     when String, URI, Regexp
44:       @allow_all_connections = false
45:       Registry.instance.register_passthrough_uri(allowed)
46:     else
47:       @allow_all_connections = allowed
48:       Registry.instance.remove_passthrough_uri
49:     end
50:   end
allow_net_connect?(uri = nil)

Returns true if requests to URIs not registered with FakeWeb are passed through to Net::HTTP for normal processing (the default). Returns false if an exception is raised for these requests.

If you’ve assigned a String, URI, or Regexp to FakeWeb.allow_net_connect=, you must supply a URI to check against that filter. Otherwise, an ArgumentError will be raised.

    # File lib/fake_web.rb, line 62
62:   def self.allow_net_connect?(uri = nil)
63:     if Registry.instance.passthrough_uri_map.any?
64:       raise ArgumentError, "You must supply a URI to test" if uri.nil?
65:       Registry.instance.passthrough_uri_matches?(uri)
66:     else
67:       @allow_all_connections
68:     end
69:   end
clean_registry()

Resets the FakeWeb Registry. This will force all subsequent web requests to behave as real requests.

    # File lib/fake_web.rb, line 20
20:   def self.clean_registry
21:     Registry.instance.clean_registry
22:   end
last_request()

Returns the request object from the last request made via Net::HTTP.

     # File lib/fake_web.rb, line 196
196:   def self.last_request
197:     @last_request
198:   end
FakeWeb.register_uri(method, uri, options)

Register requests using the HTTP method specified by the symbol method for uri to be handled according to options. If you specify the method :any, the response will be reigstered for any request for uri. uri can be a String, URI, or Regexp object. options must be either a Hash or an Array of Hashes (see below), which must contain one of these two keys:

:body

A string which is used as the body of the response. If the string refers to a valid filesystem path, the contents of that file will be read and used as the body of the response instead. (This used to be two options, :string and :file, respectively. These are now deprecated.)

:response

Either a Net::HTTPResponse, an IO, or a String which is used as the full response for the request.

The easier way by far is to pass the :response option to register_uri as a String or an (open for reads) IO object which will be used as the complete HTTP response, including headers and body. If the string points to a readable file, this file will be used as the content for the request.

To obtain a complete response document, you can use the curl command, like so:

  curl -i http://example.com > response_from_example.com

which can then be used in your test environment like so:

  FakeWeb.register_uri(:get, "http://example.com", :response => "response_from_example.com")

See the Net::HTTPResponse documentation for more information on creating custom response objects.

options may also be an Array containing a list of the above-described Hash. In this case, FakeWeb will rotate through each response. You can optionally repeat a response more than once before rotating:

:times

The number of times this response will be used before moving on to the next one. The last response will be repeated indefinitely, regardless of its :times parameter.

Two optional arguments are also accepted:

:status

Passing :status as a two-value array will set the response code and message. The defaults are 200 and OK, respectively. Example:

  FakeWeb.register_uri(:get, "http://example.com", :body => "Go away!", :status => [404, "Not Found"])
:exception

The argument passed via :exception will be raised when the specified URL is requested. Any Exception class is valid. Example:

  FakeWeb.register_uri(:get, "http://example.com", :exception => Net::HTTPError)

If you’re using the :body response type, you can pass additional options to specify the HTTP headers to be used in the response. Example:

  FakeWeb.register_uri(:get, "http://example.com/index.txt", :body => "Hello", :content_type => "text/plain")

You can also pass an array of header values to include a header in the response more than once:

  FakeWeb.register_uri(:get, "http://example.com", :set_cookie => ["name=value", "example=1"])
     # File lib/fake_web.rb, line 150
150:   def self.register_uri(*args)
151:     case args.length
152:     when 3
153:       Registry.instance.register_uri(*args)
154:     when 2
155:       print_missing_http_method_deprecation_warning(*args)
156:       Registry.instance.register_uri(:any, *args)
157:     else
158:       raise ArgumentError.new("wrong number of arguments (#{args.length} for 3)")
159:     end
160:   end
FakeWeb.registered_uri?(method, uri)

Returns true if a method request for uri is registered with FakeWeb. Specify a method of :any to check against all HTTP methods.

     # File lib/fake_web.rb, line 183
183:   def self.registered_uri?(*args)
184:     case args.length
185:     when 2
186:       Registry.instance.registered_uri?(*args)
187:     when 1
188:       print_missing_http_method_deprecation_warning(*args)
189:       Registry.instance.registered_uri?(:any, *args)
190:     else
191:       raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)")
192:     end
193:   end