溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Rails測試《三》功能測試functional test

發(fā)布時間:2020-06-16 21:46:36 來源:網(wǎng)絡 閱讀:922 作者:virusswb 欄目:編程語言

功能測試functional test

在rails中,針對單個controller中的各個action進行的測試,叫做功能測試。controller處理web的請求,將請求的響應render到view中。

 

功能測試包括的內(nèi)容

  • web請求是否成功?
  • 用戶是否被引導進入正確的頁面?
  • 用戶是否成功的驗證?
  • 響應的模板中是否包含了正確的內(nèi)容?
  • 在給用戶的view中是否顯示了適當?shù)膬?nèi)容?

 

功能測試分解

在使用rails g scaffold post或者rails g controller命令之后,會創(chuàng)建PostsController對應的功能測試文件test/functional/posts_controller_test.rb 。

  1. require 'test_helper' 
  2.  
  3. class PostsControllerTest < ActionController::TestCase 
  4.   test "should get index" do 
  5.     get :index 
  6.     assert_response :success 
  7. assert_not_nil assigns(:posts)
  8.   end 
  9.  
  10. end 

上面的test針對postscontroller的index。使用http的get方法訪問這個index,然后斷言響應成功,并且分配一個有效的posts變量。

get方法發(fā)出web request,把結(jié)果加載到response中。get方法有四個參數(shù):

  • 你要測試的action,可以是string或者symbol。get "index"或者get :index。
  • 可選的hash格式參數(shù),請求的參數(shù),傳入action的參數(shù)。querystring參數(shù),或者post參數(shù)。
  • 可選的hash格式參數(shù),傳入action的session信息。
  • 可選的hash格式參數(shù),flash信息。

 

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

調(diào)用show這個action,傳入的參數(shù)是id=12,session信息是user_id=5。

  1. get(:view, {'id' => '12'}, nil, {'message' => 'booya!'}) 

調(diào)用view這個action,傳入的參數(shù)是id=12,沒有session,但是包括一個flash,flash[:message]="booya!"。

 

功能測試中可以使用的請求類型

  • get
  • post
  • put
  • head
  • delete

 

四個hash

在一個請求完成之后,你有四個hash可以使用:

  • assigns,在action中返回給view使用的實例變量。
  • cookies,設(shè)置的cookies信息。
  • flash,flash對象。
  • session,session信息。

除了assigns以外,其他三個hash都可以通過兩種方法來訪問hash的值,assigns由于歷史原因,和其他三個有一點不一樣。

  1. flash["gordon"]               flash[:gordon
  2. session["shmession"]          session[:shmession
  3. cookies["are_good_for_u"]     cookies[:are_good_for_u
  4.   
  5. # Because you can't use assigns[:something] for historical reasons: 
  6. assigns["something"]          assigns(:something

 

三個變量

在functional test中有三個變量可以使用:

  • @controller – 處理請求的controller
  • @request – 請求本身
  • @response – 請求的響應

 

 

參考文獻

1.http://guides.rubyonrails.org/testing.html

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI