require File.dirname(__FILE__) + "/../test_helper" $LOAD_PATH << File.join(RAILS_ROOT, 'vendor', 'gems', 'mocha-0.5.2', 'lib') require 'mocha' module IsolatedController attr_reader :rendered_with def render(*args) raise ActionController::DoubleRenderError.new if performed? @performed_render = true @rendered_with = args end end class Test::Unit::TestCase def assert_rendered(*args) assert_equal args, @controller.rendered_with end end class Object def controller_unit_tests(&block) controller_name = File.basename(eval("__FILE__", block.binding), '.rb').gsub(/_test$/,'') require controller_name unless controller_name == "application_controller" controller = controller_name.camelize.constantize controller.class_eval { def rescue_action(e); raise e; end } test_class = eval "class #{controller}Test < Test::Unit::TestCase; self; end" test_class.class_eval &block test_class.class_eval do define_method :setup do @controller = controller.new @controller.extend IsolatedController @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new end end end end