You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ActionDispatch::Assertions has an autoload defined:
https://github.com/rails/rails/blob/v7.1.3/actionpack/lib/action_dispatch.rb#L130
That file requires action_dispatch/testing/assertions/routing.rb:
https://github.com/rails/rails/blob/v7.1.3/actionpack/lib/action_dispatch/testing/assertions.rb#L5
So ActionDispatch::Assertions::RoutingAssertions can be referenced
without being explicitly required.
rspec/rails/example/controller_example_group.rb, which is loaded before
this file, already references it and triggers the autoload, which means
this require never has any effect:
https://github.com/rspec/rspec-rails/blob/v6.1.1/lib/rspec/rails/example/controller_example_group.rb#L5
Requiring action_dispatch/testing/assertions/routing.rb on its own
doesn't actually work, because it autoloads ActionDispatch::Assertions
which then fails to find ActionDispatch::Assertions::RoutingAssertions
since it hasn't been defined yet:
$ ruby -r action_dispatch -e "p ActionDispatch::Assertions::RoutingAssertions"
ActionDispatch::Assertions::RoutingAssertions
$ ruby -r action_dispatch -r action_dispatch/testing/assertions/routing -e "p ActionDispatch::Assertions::RoutingAssertions"
/Users/eugene/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/actionpack-7.1.3/lib/action_dispatch/testing/assertions.rb:12:in `<module:Assertions>': uninitialized constant ActionDispatch::Assertions::RoutingAssertions (NameError)
0 commit comments