Module: RSpec::Rails::ControllerExampleGroup::ClassMethods
- Defined in:
- lib/rspec/rails/example/controller_example_group.rb
Instance Method Summary collapse
-
#controller(base_class = nil, &body) ⇒ Object
Supports a simple DSL for specifying behavior of ApplicationController.
- #controller_class ⇒ Object
Instance Method Details
#controller(base_class = nil, &body) ⇒ Object
Due to Ruby 1.8 scoping rules in anoymous subclasses, constants defined in ApplicationController must be fully qualified (e.g. ApplicationController::AccessDenied) in the block passed to the controller method. Any instance methods, filters, etc, that are defined in ApplicationController, however, are accessible from within the block.
Supports a simple DSL for specifying behavior of ApplicationController. Creates an anonymous subclass of ApplicationController and evals the body in that context. Also sets up implicit routes for this controller, that are separate from those defined in “config/routes.rb”.
If you would like to spec a subclass of ApplicationController, call controller like so:
controller(ApplicationControllerSubclass) do
# ....
end
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rspec/rails/example/controller_example_group.rb', line 56 def controller(base_class = nil, &body) base_class ||= RSpec.configuration.infer_base_class_for_anonymous_controllers? ? controller_class : ApplicationController [:example_group][:described_class] = Class.new(base_class, &body) [:example_group][:described_class].singleton_class.class_eval do def name; "AnonymousController" end end before do @orig_routes, @routes = @routes, ActionDispatch::Routing::RouteSet.new @routes.draw { resources :anonymous } end after do @routes, @orig_routes = @orig_routes, nil end end |
#controller_class ⇒ Object
17 18 19 |
# File 'lib/rspec/rails/example/controller_example_group.rb', line 17 def controller_class described_class end |