instance method
process
Ruby on Rails 6.1.7.10
Since v3.0.20Signature
process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)
Simulate an HTTP request to action by specifying request method, parameters and set/volley the response.
-
action: The controller action to call. -
method: Request method used to send the HTTP request. Possible values areGET,POST,PATCH,PUT,DELETE,HEAD. Defaults toGET. Can be a symbol. -
params: The hash with HTTP parameters that you want to pass. This may benil. -
body: The request body with a string that is appropriately encoded (application/x-www-form-urlencodedormultipart/form-data). -
session: A hash of parameters to store in the session. This may benil. -
flash: A hash of parameters to store in the flash. This may benil. -
format: Request format. Defaults tonil. Can be string or symbol. -
as: Content type. Defaults tonil. Must be a symbol that corresponds to a mime type.
Example calling create action and sending two params:
process :create, method: 'POST', params: { user: { name: 'Gaurish Sharma', email: 'user@example.com' } }, session: { user_id: 1 }, flash: { notice: 'This is flash message' }
To simulate GET, POST, PATCH, PUT, DELETE and HEAD requests prefer using #get, #post, #patch, #put, #delete and #head methods respectively which will make tests more expressive.
Note that the request method is not verified.
Parameters
-
actionreq -
methodkey = "GET" -
paramskey = nil -
sessionkey = nil -
bodykey = nil -
flashkey = {} -
formatkey = nil -
xhrkey = false -
askey = nil
Source
# File actionpack/lib/action_controller/test_case.rb, line 463
def process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)
check_required_ivars
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
Defined in actionpack/lib/action_controller/test_case.rb line 463
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionController::TestCase::Behavior