上次测试Modeul的问题还没有解决,但是下面的还要继续,这次来测试Controller。
1.在test\functional目录下,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::TestCase def setup @controller = LoginController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new end # Replace this with your real tests.def test_truth assert true end end
我们看到,在setup方法里,定义了三个对象@controller和@request和@response,这样,我们就可以在不接入webserver或network的情况下进行测试了。
2.我们来把其中的test_truth方法替换成下面的代码:
def test_index get :index assert_response :success end
其中,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
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, controller
, 方法
, response
, end
ground truth
ruby on rails、ruby on rails 教程、ruby on rails pdf、ruby on rails 5 教程、ruby on rails是什么,以便于您获取更多的相关知识。