module ActionController::TestCase::Behavior

def process(action, method: "GET", params: nil, session: nil, body: nil, flash: {}, format: nil, xhr: false, as: nil)

Note that the request method is not verified.

ActionDispatch::IntegrationTest for making multiple requests in the same test.
but it's not guaranteed that all \Rails internal state will be reset. Prefer
variables that are set in one request will not persist to the next request,
It's not recommended to make more than one request in the same test. Instance

respectively which will make tests more expressive.
prefer using #get, #post, #patch, #put, #delete and #head methods
To simulate +GET+, +POST+, +PATCH+, +PUT+, +DELETE+, and +HEAD+ requests

flash: { notice: 'This is flash message' }
session: { user_id: 1 },
},
user: { name: 'Gaurish Sharma', email: 'user@example.com' }
params: {
method: 'POST',
process :create,

Example calling +create+ action and sending two params:

to a mime type.
- +as+: Content type. Defaults to +nil+. Must be a symbol that corresponds
- +format+: Request format. Defaults to +nil+. Can be string or symbol.
- +flash+: A hash of parameters to store in the flash. This may be +nil+.
- +session+: A hash of parameters to store in the session. This may be +nil+.
(application/x-www-form-urlencoded or multipart/form-data).
- +body+: The request body with a string that is appropriately encoded
- +params+: The hash with HTTP parameters that you want to pass. This may be +nil+.
are +GET+, +POST+, +PATCH+, +PUT+, +DELETE+, +HEAD+. Defaults to +GET+. Can be a symbol.
- +method+: Request method used to send the HTTP request. Possible values
- +action+: The controller action to call.

parameters and set/volley the response.
Simulate an HTTP request to +action+ by specifying request method,
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