下面思路方法用来模拟HTTP请求并得到个回应(response)
get
put
post
delete
head
这 5个每个都有同样 4个参数以get为例:
get(action, parameters = nil, session = nil, flash = nil)
向指定Action发出个HTTP GET请求并且设定Response 4个参数含义分别为:
action:HTTP请求所指定某个控制器(controller)个Action
Parameters:可选Hash作为request参数
Session:可选SessionHash
Flash:可选flashHash
下面是例子:
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是否被重定向到其他controlleraction或页面例如:
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 _disibledevent=nil)
由最后个action赋值例子变量
assert_not_nil assigns["items"]
assigns必须被指定个串作为索引但是上面assert_not_nil assigns["items"]却不会起作用items是个关键字可以使用思路方法来代替:
assert_not_nil assigns(:items)
l session
session个hash对象:
assert_equal 2, session[:cart].items
l flash
在session里存放flashhash对象
assert_equal "Danger!", flash[:notice]
l cookies
用户使用cookieshash对象
assert_equal "Fred", cookies[:name]
l redirect_to_url
上个action重定向完整url
assert_equal "http://test.host/login", redirect_to_url
OK这次就到这里下次继续会到controller测试
最新评论