instance method
with_routing
Ruby on Rails 6.0.6
Since v3.0.20Signature
with_routing()
A helper to make it easier to test different route configurations. This method temporarily replaces @routes with a new RouteSet instance.
The new instance is yielded to the passed block. Typically the block will create some routes using set.draw { match ... }:
with_routing do |set| set.draw do resources :users end assert_equal "/users", users_path end
Source
# File actionpack/lib/action_dispatch/testing/assertions/routing.rb, line 154
def with_routing
old_routes, @routes = @routes, ActionDispatch::Routing::RouteSet.new
if defined?(@controller) && @controller
old_controller, @controller = @controller, @controller.clone
_routes = @routes
@controller.singleton_class.include(_routes.url_helpers)
if @controller.respond_to? :view_context_class
view_context_class = Class.new(@controller.view_context_class) do
include _routes.url_helpers
end
custom_view_context = Module.new {
define_method(:view_context_class) do
view_context_class
end
}
@controller.extend(custom_view_context)
end
end
yield @routes
ensure
@routes = old_routes
if defined?(@controller) && @controller
@controller = old_controller
end
end
Defined in actionpack/lib/action_dispatch/testing/assertions/routing.rb line 154
· View on GitHub
· Improve this page
· Find usages on GitHub