Rails测试《三》功能测试functional test

简介:

功能测试functional test

在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 – 请求的响应

 

 




本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/1075409,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
148 0
|
4月前
|
JavaScript 前端开发 测试技术
Vue.js开发者必看!Vue Test Utils携手端到端测试,打造无懈可击的应用体验,引领前端测试新风尚!
【8月更文挑战第30天】随着Vue.js的普及,构建可靠的Vue应用至关重要。测试不仅能确保应用质量,还能提升开发效率。Vue Test Utils作为官方测试库,方便进行单元测试,而结合端到端(E2E)测试,则能构建全面的测试体系,保障应用稳定性。本文将带你深入了解如何使用Vue Test Utils进行单元测试,通过具体示例展示如何测试组件行为;并通过Cypress进行E2E测试,确保整个应用流程的正确性。无论是单元测试还是E2E测试,都能显著提高Vue应用的质量,让你更加自信地交付高质量的应用。
83 0
|
4月前
|
Java 测试技术
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
87 0
|
5月前
|
Java 测试技术 程序员
测试气味Test Smells-整洁单元测试
摘要:本文讨论了代码中的“Code Smell”现象,即可能表明代码质量问题的模式。这些包括重复代码、过长函数、过大类、过长参数列表等。识别并重构Code Smell有助于提升代码质量和可维护性。在单元测试中,也有类似的“测试味道”问题,如无信息的测试名称、缺少arrange-act-assert结构、不恰当的变量名和重复使用以及杀虫剂效应。好的单元测试应有明确的命名、遵循arrange-act-assert模式、使用有意义的变量名,并避免重复测试同一情况,以提供有价值的错误信息。
|
6月前
|
Java
springboot Test 测试类中如何排除一个bean类
springboot Test 测试类中如何排除一个bean类
151 0
|
7月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
79 0
|
7月前
|
机器学习/深度学习 Shell 开发工具
利用 test命令的测试功能
【1月更文挑战第4天】利用 test命令的测试功能。
85 4
|
7月前
|
测试技术 Shell Android开发
随机测试 Monkey Test
随机测试 Monkey Test
190 0
|
7月前
|
缓存
pytest 运行测试函数报错的解决办法 TypeError: calling <function xxx> returned None, not a test
pytest 运行测试函数报错的解决办法 TypeError: calling <function xxx> returned None, not a test
372 0
|
测试技术 Go Cloud Native
Go test 单元测试用起来
单元测试,是指对软件中的最小可测试单元进行检查和验证