Ruby on rails开发从头来(windows)(二十二)-测试Controller2011-12-02 博客园 Cure上次测试Modeul的问题还没有解决,但是下面的还要继续,这次来测试Controller。1.在testfunctional目录下,rails已经为我们的controller生成了对应的测试文件,要注意application_controller不会生成测试文件。我们以控制登录的LoginController为例,打开login_controller_test.rb,内容如下:
require File.dirname(__FILE__) + "/../test_helper"require "login_controller" # Re-raise errors caught by the controller.class LoginController; def rescue_action(e) raise e end; end class LoginControllerTest < Test::Unit::TestCasedef setup@controller = LoginController.new@request = ActionController::TestRequest.new@response = ActionController::TestResponse.newend# Replace this with your real tests.def test_truthassert trueendend
我们看到,在setup方法里,定义了三个对象@controller和@request和@response,这样,我们就可以在不接入webserver或network的情况下进行测试了。2.我们来把其中的test_truth方法替换成下面的代码:
def test_indexget :indexassert_response :successend
其中,get方法模拟发出一个web请求,请求的action是index,并且捕捉响应(response),然后由assert_response断言来判断响应是否成功。现在运行测试:depot>ruby test/functional/login_controller_test.rb会看到测试失败了,命令行的输出:
Expected response to be a <:success>, but was <302>1 tests, 1 assertions, 1 failures, 0 errors