# 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