mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
6052fa9288
The [Grape API framework](https://github.com/ruby-grape/grape) regularly writes tests like [spec/grape/api_spec.rb](https://github.com/ruby-grape/grape/blob/master/spec/grape/api_spec.rb). When attempting to write a test in a Rails environment similar to the following: ``` describe Grape::Api, type: :request do let(:app) { Class.new(Grape::API) do get 'test' do { foo: 'bar' } end end } it '200s' do get 'test' end end ``` The following exception is thrown: ``` NoMethodError: undefined method `url_helpers' for #<Array:0x00007fb4e4bc4c88> -- 0: .../lib/action_dispatch/testing/integration.rb:330:in `block in create_session' 1: .../lib/action_dispatch/testing/integration.rb:326:in `initialize' 2: .../lib/action_dispatch/testing/integration.rb:326:in `new' 3: .../lib/action_dispatch/testing/integration.rb:326:in `create_session' 4: .../lib/action_dispatch/testing/integration.rb:316:in `integration_session' 5: .../lib/action_dispatch/testing/integration.rb:348:in `block (2 levels) in <module:Runner>' ``` This change explicitly ensures that `app.routes` is an `ActionDispatch::Routing::RouteSet` instance.
27 lines
522 B
Ruby
27 lines
522 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "abstract_unit"
|
|
|
|
module ActionDispatch
|
|
module Routing
|
|
class NonDispatchRoutedAppTest < ActionDispatch::IntegrationTest
|
|
# For example, Grape::API
|
|
class SimpleApp
|
|
def self.call(env)
|
|
[ 200, { "Content-Type" => "text/plain" }, [] ]
|
|
end
|
|
|
|
def self.routes
|
|
[]
|
|
end
|
|
end
|
|
|
|
setup { @app = SimpleApp }
|
|
|
|
test "does not except" do
|
|
get "/foo"
|
|
assert_response :success
|
|
end
|
|
end
|
|
end
|
|
end
|