快速业务通道

Ruby on rails开发从头来(windows)(二十三)-功能测试的约定 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on rails开发从头来(windows)(二十三)-功能测试的约定

时间:2011-12-02 博客园 Cure

上篇随笔里测试了login_controller,我们使用了很多rails内建的断言和get,put等方法来进行测试。这次来看看rails在功能测试方面的一些约定。

1.HTTP请求的方法(HTTP request method)

下面的方法用来模拟HTTP请求并得到一个回应(response)

get()
put()
post()
delete()
head()

这五个函数每一个都有同样的四个参数,以get()为例:

get(action, parameters = nil, session = nil, flash = nil)

向指定的Action发出一个HTTP GET请求,并且设定Response,四个参数的含义分别为:

action:HTTP请求所指定的某个控制器(controller)的一个Action。

Parameters:可选的Hash,作为request的参数。

Session:可选的,Session的Hash。

Flash:可选的,flash的Hash。

下面是例子:

get :index
get :add_to_cart, :id => @version_control_book.id
get :add_to_cart, :id => @version_control_book.id,
:session_key => ''session_value'', :message => "Success!"

Ruby on rails开发从头来(windows)(二十三)-功能测试的约定(2)

时间:2011-12-02 博客园 Cure

2.断言(assertion)

除了有Test:Unit提供的一些基本的断言(assertion),功能测试还可以在执行请求后使用一些自定义的断言。例如下面的:

l  assert_response(type, message=nil)

判断得到的HTTP响应是一个数字型的状态值或者下面列举的标记,这些标记覆盖了HTTP响应值,例如:redirect对应300-399。

:success
:redirect
:missing
:error

例子:

assert_response :success
assert_response 200

l  assert_redirected_to(options = {}, message=nil)

判断最后一个请求的Action是否被重定向到其他的controller,action或页面,例如:

assert_redirected_to :controller => ''login''

assert_redirected_to :controller => ''login'', :action => ''index''

assert_redirected_to "http://my.host/index.html"

l  assert_template(expected=nil, message=nil)

判断一个请求是否使用了指定的template来描画(render)

例如:

assert_template ''store/index''

Ruby on rails开发从头来(windows)(二十三)-功能测试的约定(3)

时间:2011-12-02 博客园 Cure

l  assert_tag(conditions)

判断在一个响应的body内是否有符合指定条件的tag,条件的参数必须是下面的keys中的一个或多个。

:tag,节点的类型

assert_tag :tag => ''html''

:content,判断节点的content的值

assert_tag :content => "Pragprog Books Online Store"

:attributes,一组条件,用来判断节点的属性

assert_tag :tag => "div", :attributes => { :class => "fieldWithErrors" }

:parent,一组条件,判断节点的父节点

assert_tag :tag => "head", :parent => { :tag => "html" }

:child,一组条件,判断当前节点的最近的一个直属的child

assert_tag :tag => "html", :child => { :tag => "head" }

:ancestor,一组条件,判断当前节点的最近的一个祖先

assert_tag :tag => "div", :ancestor => { :tag => "html" }

:descendant,一组条件,判断当前节点的最近的一个子孙

assert_tag :tag => "html", :descendant => { :tag => "div" }

:children,一组条件,判断节点的children的数量,使用下面的key中的任意一个或一组

:count,一个数字或一个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号