When the request.remote_addr remains the default for testing, which is 0.0.0.0, the exception is simply raised inline (skipping the regular exception handling from rescue_action). If the request.remote_addr is anything else, the regular rescue_action process takes place. This means you can test your rescue_action code by setting remote_addr to something else than 0.0.0.0.

The exception is stored in the exception accessor for further inspection.

Methods
I
R
Class Public methods
included(base)
     # File actionpack/lib/action_controller/test_case.rb, line 531
531:       def self.included(base)
532:         unless base.method_defined?(:exception) && base.method_defined?(:exception=)
533:           base.class_eval do
534:             attr_accessor :exception
535:             protected :exception, :exception=
536:           end
537:         end
538:       end
Instance Protected methods
rescue_action_without_handler(e)
     # File actionpack/lib/action_controller/test_case.rb, line 541
541:         def rescue_action_without_handler(e)
542:           self.exception = e
543: 
544:           if request.remote_addr == "0.0.0.0"
545:             raise(e)
546:           else
547:             super(e)
548:           end
549:         end