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 |