module Sinatra::Test
def test_request(verb, path, *args)
def test_request(verb, path, *args) @app = Sinatra::Application if @app.nil? && defined?(Sinatra::Application) fail "@app not set - cannot make request" if @app.nil? @request = Rack::MockRequest.new(@app) opts, input = case args.size when 2 # input, env input, env = args if input.kind_of?(Hash) # params, env [env, param_string(input)] else [env, input] end when 1 # params if (data = args.first).kind_of?(Hash) env = (data.delete(:env) || {}) [env, param_string(data)] else [{}, data] end when 0 [{}, ''] else raise ArgumentError, "zero, one, or two arguments expected" end opts = rack_opts(opts) opts[:input] ||= input yield @request if block_given? @response = @request.request(verb, path, opts) end