- B
- C
- D
- G
- H
- P
- Q
- S
- ActionDispatch::TestProcess
- ActiveSupport::Testing::ConstantLookup
- Rails::Dom::Testing::Assertions
- ActionDispatch::Assertions
屬性
[R] | request | |
[R] | response |
實例公開方法
build_response(klass) 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 584 def build_response(klass) klass.create end
controller_class_name() 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 544 def controller_class_name @controller.class.anonymous? ? "anonymous" : @controller.class.controller_path end
delete(action, **args) 連結
使用給定的參數模擬 DELETE 請求,並設定/處理回應。詳情請參閱 get
。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 455 def delete(action, **args) process(action, method: "DELETE", **args) end
generated_path(generated_extras) 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 548 def generated_path(generated_extras) generated_extras[0] end
get(action, **args) 連結
使用給定的參數模擬 GET 請求。
-
action
:要呼叫的控制器動作。 -
params
:您想要傳遞的 HTTP 參數雜湊。可以是nil
。 -
body
:請求主體,包含一個經過適當編碼的字串(application/x-www-form-urlencoded
或multipart/form-data
)。 -
session
:要儲存在工作階段中的參數雜湊。可以是nil
。 -
flash
:要儲存在快閃訊息中的參數雜湊。可以是nil
。
您也可以使用 post
、patch
、put
、delete
和 head
模擬 POST、PATCH、PUT、DELETE 和 HEAD 請求。範例:傳送參數、工作階段和設定快閃訊息
get :show,
params: { id: 7 },
session: { user_id: 1 },
flash: { notice: 'This is flash message' }
請注意,不會驗證請求方法。提供不同的方法是為了使測試更具表達性。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 431 def get(action, **args) process(action, method: "GET", **args) end
head(action, **args) 連結
使用給定的參數模擬 HEAD 請求,並設定/處理回應。詳情請參閱 get
。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 461 def head(action, **args) process(action, method: "HEAD", **args) end
patch(action, **args) 連結
使用給定的參數模擬 PATCH 請求,並設定/處理回應。詳情請參閱 get
。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 443 def patch(action, **args) process(action, method: "PATCH", **args) end
post(action, **args) 連結
使用給定的參數模擬 POST 請求,並設定/處理回應。詳情請參閱 `get`。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 437 def post(action, **args) process(action, method: "POST", **args) end
process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil) 連結
透過指定請求方法、參數來模擬對 `action` 的 HTTP 請求,並設定/處理回應。
-
action
:要呼叫的控制器動作。 -
method
:用於發送 HTTP 請求的請求方法。可能的值為 `GET`、`POST`、`PATCH`、`PUT`、`DELETE`、`HEAD`。預設為 `GET`。可以是符號。 -
params
:您想要傳遞的 HTTP 參數雜湊。可以是nil
。 -
body
:請求主體,包含一個經過適當編碼的字串(application/x-www-form-urlencoded
或multipart/form-data
)。 -
session
:要儲存在工作階段中的參數雜湊。可以是nil
。 -
flash
:要儲存在快閃訊息中的參數雜湊。可以是nil
。 -
`format`: 請求格式。預設為 `nil`。可以是字串或符號。
-
as
:內容類型。預設為nil
。必須是與 MIME 類型相對應的符號。
範例:呼叫 create
動作並傳送兩個參數
process :create,
method: 'POST',
params: {
user: { name: 'Gaurish Sharma', email: 'user@example.com' }
},
session: { user_id: 1 },
flash: { notice: 'This is flash message' }
若要模擬 GET
、POST
、PATCH
、PUT
、DELETE
和 HEAD
請求,建議使用 get
、post
、patch
、put
、delete
和 head
方法,這些方法將使測試更具表達性。
不建議在同一個測試中發出多個請求。在一個請求中設定的實例變數不會持續到下一個請求,但不保證所有 Rails
內部狀態都會被重設。若要在同一個測試中發出多個請求,建議使用 ActionDispatch::IntegrationTest
。
請注意,不會驗證請求方法。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 504 def process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil) check_required_ivars @controller.clear_instance_variables_between_requests action = +action.to_s http_method = method.to_s.upcase @html_document = nil cookies.update(@request.cookies) cookies.update_cookies_from_jar @request.set_header "HTTP_COOKIE", cookies.to_header @request.delete_header "action_dispatch.cookies" @request = TestRequest.new scrub_env!(@request.env), @request.session, @controller.class @response = build_response @response_klass @response.request = @request @controller.recycle! if body @request.set_header "RAW_POST_DATA", body end @request.set_header "REQUEST_METHOD", http_method if as @request.content_type = Mime[as].to_s format ||= as end parameters = (params || {}).symbolize_keys if format parameters[:format] = format end setup_request(controller_class_name, action, parameters, session, flash, xhr) process_controller_response(action, cookies, xhr) end
put(action, **args) 連結
使用給定的參數模擬 PUT 請求,並設定/處理回應。詳情請參閱 get
。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 449 def put(action, **args) process(action, method: "PUT", **args) end
query_parameter_names(generated_extras) 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 552 def query_parameter_names(generated_extras) generated_extras[1] + [:controller, :action] end
setup_controller_request_and_response() 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_controller/test_case.rb, line 556 def setup_controller_request_and_response @controller = nil unless defined? @controller @response_klass = ActionDispatch::TestResponse if klass = self.class.controller_class if klass < ActionController::Live @response_klass = LiveTestResponse end unless @controller begin @controller = klass.new rescue warn "could not construct controller #{klass}" if $VERBOSE end end end @request = TestRequest.create(@controller.class) @response = build_response @response_klass @response.request = @request if @controller @controller.request = @request @controller.params = {} end end