    # File lib/action_controller/assertions/routing_assertions.rb, line 39
          def assert_recognizes(expected_options, path, extras={}, message=nil)
            if path.is_a? Hash
              request_method = path[:method]
              path           = path[:path]
            else
              request_method = nil
            end

            clean_backtrace do
              ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
              request = recognized_request_for(path, request_method)

              expected_options = expected_options.clone
              extras.each_key { |key| expected_options.delete key } unless extras.nil?

              expected_options.stringify_keys!
              routing_diff = expected_options.diff(request.path_parameters)
              msg = build_message(message, "The recognized options <?> did not match <?>, difference: <?>",
                  request.path_parameters, expected_options, expected_options.diff(request.path_parameters))
              assert_block(msg) { request.path_parameters == expected_options }
            end
          end