Class Typhoeus::Expectation
In: lib/typhoeus/expectation.rb
Parent: Object

This class represents an expectation. It is part of the stubbing mechanism. An expectation contains a url and options, like a request. They are compared to the request url and options in order to evaluate whether they match. If that‘s the case, the attached responses are returned one by one.

@example Stub a request and get specified response.

  expected = Typhoeus::Response.new
  Typhoeus.stub("www.example.com").and_return(expected)

  actual = Typhoeus.get("www.example.com")
  expected == actual
  #=> true

@example Stub a request and get a lazily-constructed response containing data from actual widgets that exist in the system when the stubbed request is made.

  Typhoeus.stub("www.example.com/widgets") do
    actual_widgets = Widget.all
    Typhoeus::Response.new(
      :body => actual_widgets.inject([]) do |ids, widget|
        ids << widget.id
      end.join(",")
    )
  end

@example Stub a request and get a lazily-constructed response in the format requested.

  Typhoeus.stub("www.example.com") do |request|
    accept = (request.options[:headers]||{})['Accept'] || "application/json"
    format = accept.split(",").first
    body_obj = { 'things' => [ { 'id' => 'foo' } ] }

    Typhoeus::Response.new(
      :headers => {
        'Content-Type' => format
      },
      :body => SERIALIZERS[format].serialize(body_obj)
    )
  end

Methods

Attributes

base_url  [R]  @api private
from  [R]  @api private
options  [R]  @api private

Public Class methods

Returns all expectations.

@example Return expectations.

  Typhoeus::Expectation.all

@return [ Array<Typhoeus::Expectation> ] The expectations.

Clears expectations. This is handy while testing, and you want to make sure that you don‘t get canned responses.

@example Clear expectations.

  Typhoeus::Expectation.clear

@api private

Creates an expectation.

@example Create expectation.

  Typhoeus::Expectation.new(base_url)

@return [ Expectation ] The created expectation.

@api private

Returns stubbed response matching the provided request.

@example Find response

  Typhoeus::Expectation.response_for(request)

@return [ Typhoeus::Response ] The stubbed response from a

  matching expectation, or nil if no matching expectation
  is found.

@api private

Public Instance methods

Specify what should be returned, when this expectation is hit.

@example Add response.

  expectation.and_return(response)

@return [ void ]

Checks whether this expectation matches the provided request.

@example Check if request matches.

  expectation.matches? request

@param [ Request ] request The request to check.

@return [ Boolean ] True when matches, else false.

@api private

Return the response. When there are multiple responses, they are returned one by one.

@example Return response.

  expectation.response

@return [ Response ] The response.

@api private

Return canned responses.

@example Return responses.

  expectation.responses

@return [ Array<Typhoeus::Response> ] The responses.

@api private

Set from value to mark an expectaion. Useful for other libraries, e.g. WebMock.

@example Mark expectation.

  expectation.from(:webmock)

@param [ String ] value Value to set.

@return [ Expectation ] Returns self.

@api private

[Validate]