class Faraday::Adapter::Test

def call(env)

Parameters:
  • env (Faraday::Env) --
def call(env)
  super
  env.request.params_encoder ||= Faraday::Utils.default_params_encoder
  env[:params] = env.params_encoder.decode(env[:url].query) || {}
  stub, meta = stubs.match(env)
  unless stub
    raise Stubs::NotFound, "no stubbed request for #{env[:method]} " \
                           "#{env[:url]} #{env[:body]} #{env[:headers]}"
  end
  block_arity = stub.block.arity
  params = if block_arity >= 0
             [env, meta].take(block_arity)
           else
             [env, meta]
           end
  timeout = request_timeout(:open, env[:request])
  timeout ||= request_timeout(:read, env[:request])
  status, headers, body =
    if timeout
      ::Timeout.timeout(timeout, Faraday::TimeoutError) do
        stub.block.call(*params)
      end
    else
      stub.block.call(*params)
    end
  # We need to explicitly pass `reason_phrase = nil` here to avoid keyword args conflicts.
  #   See https://github.com/lostisland/faraday/issues/1444
  # TODO: remove `nil` explicit reason_phrase once Ruby 3.0 becomes minimum req. version
  save_response(env, status, body, headers, nil)
  @app.call(env)
end