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 。

require 'test_helper'

class PostsControllerTest < ActionController::TestCase
  test "should get index" do
    get :index
    assert_response :success
assert_not_nil assigns(:posts)
  end 

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信息。

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

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

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由于历史原因,和其他三个有一点不一样。

flash["gordon"]               flash[:gordon]
session["shmession"]          session[:shmession]
cookies["are_good_for_u"]     cookies[:are_good_for_u] 

# Because you can't use assigns[:something] for historical reasons:
assigns["something"]          assigns(:something)

三个变量

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

@controller – 处理请求的controller

@request – 请求本身

@response – 请求的响应

本文出自 “突破中的IT结构师” 博客,请务必保留此出处http://virusswb.blog.51cto.com/115214/1075409

查看本栏目更多精彩内容:http://www.bianceng.cn/Programming/project/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索flash
, session
, action
, controller
, 参数
功能测试
functional test、rails test、rails test auth、rails 测试、rails 单元测试,以便于您获取更多的相关知识。

时间: 2024-08-01 23:20:34

Rails测试《三》功能测试functional test的相关文章

Rails测试《一》fixtures简介

简介 每个rails应用都包括三个环境: 生产环境 开发环境 测试环境 我们的测试就是跑在测试环境,如果测试涉及数据库,会在测试数据库进行操作.这样不会对生产环境和开发环境的数据造成影响. 我们先使用 rails new projects 命令来创建一个rails应用,默认会给我们创建一个projects目录,里面会包含一些默认的目录和文件.其中有一个文件夹test,里面将会放我们全部的测试相关文件. $ ls -F test/ fixtures/       functional/     i

Rails测试《十》不能错过的杂七杂八

今天来介绍一些杂七杂八的测试知识,但是它们是不能错过的. 首先来介绍一下常用的测试命令 rake test 运行包括单元测试.功能测试和集成测试在内的所有测试. rake test:units 运行所有的单元测试. rake test:functionals 运行所有的功能测试 rake test:integration 运行所有的集成测试. rake test:recent 运行最近修改过的测试. rake test:uncommited 运行所有未提交的测试.支持svn和git. setup

Rails测试《六》实战单元测试

用factory-girl替换fixtures来创建模拟数据2 上一篇我们介绍了factory-girl,这是一个很好的工具,可以用来替代rails中的fixtures,用来生成模拟数据. 它直观,易读,易读就易维护.最重要的一点是,它是面向model的,面向业务的,面向应用的,而fixtures模拟的数据是面向数据库的.但是我们的单元测试,功能测试,甚至将来要介绍的集成测试,都是面向业务的,从业务角度出发的测试,测试系统是否满足业务需求.所以好处显而易见了,相信大家在使用了以后会有一点感触.

Rails测试《五》实战单元测试

用factory-girl替换fixtures来创建模拟数据 fixtures 在前面我们介绍了,rails的测试系统默认使用fixtures来创建模拟数据,这些数据以yaml的格式书写,放在db/fixtures文件夹中,每个model都有一个对应的文件,test/fixtures/users.yml. 在测试启动的时候这些fixtures中的数据会加载到测试数据库,并且加载到变量中,供单元测试和功能测试使用. 使用fixtures有几个不利的因素,使得他们处于不利的位置. 最主要的一个因素是

网站可用性测试:三种可用性测试方法

文章描述:网站可用性测试:三种可用性测试方法. 本文介绍三种可用性测试方法,可能很多朋友已经知道,不过对于网站设计师来说可用性测试时十分重要的.所以再次整理出来供分享.  我们先说下为什么可用性测试如此重要. 首先可用性测试可以发现你网站的潜在问题,通过可用性测试获得的反馈数据,可以了解一个用户在你网站中做了什么,以及用户如何看待和理解你的网站.此外优秀的可用性性网站可以增强用户的互动性,用户也更愿意将网站分享给其他人.对于电子商务网站来说,可用性可以增加网站转化率.总之可用性可以增加你网站的附

Rails测试《四》实战单元测试unit test

之前的博客介绍了一些rails测试相关的知识.测试文件的位置,测试的类型,测试常用命令,以及可用的一些资源,以及如何利用fixtures生成模拟数据. 今天我们来实际的写一下单元测试,用到的知识主要是fixtures和unit test.fixtures用来模拟数据,unit test就是我们今天的主角-单元测试. 今天的代码将以blog项目为背景,为这个项目写一些单元测试. 这个项目的代码可以在https://github.com/woaigithub/blog获取到,而且项目已经部署到htt

测试三问——新手必看

测试三问--新手必看 在进入软件测试行业之初,很多人都会存在下面最原始的问题,我称之为"测试三问": 1.什么是软件测试? 2.为什么会有或会需要做软件测试? 3.软件测试的目的是什么? 答: 一.什么是软件测试? 软件测试是一个过程.是一个质量保证中的一个环节,是一个验证被测产品是否符合客户需求的过程.而且是一个有计划.有规律.有组织的活动. 二.为什么会有或需要进行软件测试? 先简单来描述一个逻辑: 第一.随着信息化的发展,我们在各行各业使用了越来越多的软件.一方面为我们提高工作效

Rails测试《八》实战功能测试functional test2

今天继续我们的功能测试实战. 项目还是:blog,大家可以从github或者gitcafe中获取项目源码. 先来介绍一个断言 assert_difference(expression, difference = 1, message = nil, &block) http://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html中比较详细的介绍. 再一次强烈推荐http://api.rubyonrails.org/,还

Rails测试《七》实战功能测试functional test

之前我们介绍过,rails的功能测试针对的是controller,测试controller的action是否正确的执行. 测试的内容主要是: 测试请求是否正确. 测试用户是否跳转到正确的页面. 测试用户是否验证成功. 测试响应中是否包含了正确的对象. 测试在view中是否给用户显示了适当的信息. 常用的断言函数 1.assert_response(type, message = nil) 断言响应是否成功,是否是指定的状态码. assert_response :success代表200,asse