在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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!" 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' 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,一个数字或一个范围,指定要match的children的编号。 :less_than,children的编号必须小于指定的数字。 :greater_than,children的编号必须大于指定的数字。 :only,当计算children的数量是使用的一组条件。 例子: assert_tag :tag => "ul",:children => { :count => 1..3,:only => { :tag => "li" } } 更多的断言参考:http://api.rubyonrails.com/classes/Test/Unit/Assertions.html. 3. 变量 当一个请求(request)被执行,可以依靠下面的变量来进行断言。 l assigns(key=nil) 由最后一个action赋值的实例变量。 assert_not_nil assigns["items"] assigns必须被指定一个字符串作为索引,但是上面的assert_not_nil assigns["items"]却不会起作用,因为items是一个关键字,可以使用一方法调用来代替: assert_not_nil assigns(:items) l session session的一个
2023-10-27 2022-08-15 2022-08-17 2022-09-23 2022-08-13 |
请发表评论