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

  上篇随笔里测试了login_controller我们使用了很多rails内建断言和getput等思路方法来进行测试这次来看看rails在功能测试方面些约定   1.    HTTP请求思路方法(HTTP request method)

  下面思路方法用来模拟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测试



Tags:  rubyonrails安装 rubyforrails rubyrails rubyonrails

延伸阅读

最新评论

发表评论