class Faraday::Adapter::Test
Examples
test = Faraday::Connection.new do use Faraday::Adapter::Test do |stub| # simply define matcher to match the request stub.get '/resource.json' do # return static content [200, {'Content-Type' => 'application/json'}, 'hi world'] end # response with content generated based on request stub.get '/showget' do |env| [200, {'Content-Type' => 'text/plain'}, env[:method].to_s] end # regular expression can be used as matching filter stub.get /\A\/items\/(\d+)\z/ do |env, meta| # in case regular expression is used an instance of MatchData can be received [200, {'Content-Type' => 'text/plain'}, "showing item: #{meta[:match_data][1]}"] end end end resp = test.get '/resource.json' resp.body # => 'hi world' resp = test.get '/showget' resp.body # => 'get' resp = test.get '/items/1' resp.body # => 'showing item: 1' resp = test.get '/items/2' resp.body # => 'showing item: 2'
Attributes
stubs[RW]
Public Class Methods
new(app, stubs=nil, &block)
click to toggle source
Calls superclass method
Faraday::Adapter::new
# File lib/faraday/adapter/test.rb, line 181 def initialize(app, stubs=nil, &block) super(app) @stubs = stubs || Stubs.new configure(&block) if block end
Public Instance Methods
call(env)
click to toggle source
Calls superclass method
Faraday::Adapter#call
# File lib/faraday/adapter/test.rb, line 191 def call(env) super host = env[:url].host normalized_path = Faraday::Utils.normalize_path(env[:url]) params_encoder = env.request.params_encoder || Faraday::Utils.default_params_encoder stub, meta = stubs.match(env[:method], host, normalized_path, env.request_headers, env[:body]) if stub env[:params] = (query = env[:url].query) ? params_encoder.decode(query) : {} block_arity = stub.block.arity status, headers, body = (block_arity >= 0) ? stub.block.call(*[env, meta].take(block_arity)) : stub.block.call(env, meta) save_response(env, status, body, headers) else raise Stubs::NotFound, "no stubbed request for #{env[:method]} #{normalized_path} #{env[:body]}" end @app.call(env) end
configure() { |stubs| ... }
click to toggle source
# File lib/faraday/adapter/test.rb, line 187 def configure yield(stubs) end