module ActionController::TestCase::Behavior::ClassMethods

def controller_class

def controller_class
  if current_controller_class = read_inheritable_attribute(:controller_class)
    current_controller_class
  else
    self.controller_class = determine_default_controller_class(name)
  end
end

def controller_class=(new_class)

def controller_class=(new_class)
  prepare_controller_class(new_class) if new_class
  write_inheritable_attribute(:controller_class, new_class)
end

def determine_default_controller_class(name)

def determine_default_controller_class(name)
  name.sub(/Test$/, '').constantize
rescue NameError
  nil
end

def prepare_controller_class(new_class)

def prepare_controller_class(new_class)
  new_class.send :include, ActionController::TestCase::RaiseActionExceptions
end

def tests(controller_class)

Expects +controller_class+ as a constant. Example: tests WidgetController.
Sets the controller class name. Useful if the name can't be inferred from test class.
def tests(controller_class)
  self.controller_class = controller_class
end