Rails测试《三》功能测试functionaltest-创新互联

功能测试functional test

成都创新互联基于分布式IDC数据中心构建的平台为众多户提供棕树数据中心 四川大带宽租用 成都机柜租用 成都服务器租用。

在rails中,针对单个controller中的各个action进行的测试,叫做功能测试。controller处理web的请求,将请求的响应render到view中。

功能测试包括的内容

  • web请求是否成功?
  • 用户是否被引导进入正确的页面?
  • 用户是否成功的验证?
  • 响应的模板中是否包含了正确的内容?
  • 在给用户的view中是否显示了适当的内容?

功能测试分解

在使用rails g scaffold post或者rails g controller命令之后,会创建PostsController对应的功能测试文件test/functional/posts_controller_test.rb 。

  1. require 'test_helper' 
  2.  
  3. class PostsControllerTest < ActionController::TestCase 
  4.   test "should get index" do 
  5.     get :index 
  6.     assert_response :success 
  7. assert_not_nil assigns(:posts)
  8.   end 
  9.  
  10. end 

上面的test针对postscontroller的index。使用http的get方法访问这个index,然后断言响应成功,并且分配一个有效的posts变量。

get方法发出web request,把结果加载到response中。get方法有四个参数:

  • 你要测试的action,可以是string或者symbol。get "index"或者get :index。
  • 可选的hash格式参数,请求的参数,传入action的参数。querystring参数,或者post参数。
  • 可选的hash格式参数,传入action的session信息。
  • 可选的hash格式参数,flash信息。

  1. get(:show, {'id' => "12"}, {'user_id' => 5}) 

调用show这个action,传入的参数是id=12,session信息是user_id=5。

  1. get(:view, {'id' => '12'}, nil, {'message' => 'booya!'}) 

调用view这个action,传入的参数是id=12,没有session,但是包括一个flash,flash[:message]="booya!"。

功能测试中可以使用的请求类型

  • get
  • post
  • put
  • head
  • delete

四个hash

在一个请求完成之后,你有四个hash可以使用:

  • assigns,在action中返回给view使用的实例变量。
  • cookies,设置的cookies信息。
  • flash,flash对象。
  • session,session信息。

除了assigns以外,其他三个hash都可以通过两种方法来访问hash的值,assigns由于历史原因,和其他三个有一点不一样。

  1. flash["gordon"]               flash[:gordon] 
  2. session["shmession"]          session[:shmession] 
  3. cookies["are_good_for_u"]     cookies[:are_good_for_u] 
  4.   
  5. # Because you can't use assigns[:something] for historical reasons: 
  6. assigns["something"]          assigns(:something) 

三个变量

在functional test中有三个变量可以使用:

  • @controller– 处理请求的controller
  • @request– 请求本身
  • @response– 请求的响应

参考文献

1.http://guides.rubyonrails.org/testing.html

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享文章:Rails测试《三》功能测试functionaltest-创新互联
文章起源:http://hbruida.cn/article/gshpo.html