- B
- D
- G
- H
- P
- S
- X
- ActionDispatch::TestProcess
- ActiveSupport::Testing::ConstantLookup
- Testing
- ActionController::TemplateAssertions
- ActionDispatch::Assertions
[R] | request | |
[R] | response |
Simulate a DELETE request with the given parameters and set/volley the
response. See get
for more details.
Simulate a GET request with the given parameters.
-
action
: The controller action to call. -
parameters
: The HTTP parameters that you want to pass. This may benil
, a hash, or a string that is appropriately encoded (application/x-www-form-urlencoded
ormultipart/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
.
You can also simulate POST, PATCH, PUT, DELETE, HEAD, and OPTIONS requests
with post
, patch
, put
,
delete
, head
, and options
.
Note that the request method is not verified. The different methods are available to make the tests more expressive.
Simulate a HEAD request with the given parameters and set/volley the
response. See get
for more details.
# File actionpack/lib/action_controller/test_case.rb, line 512 def paramify_values(hash_or_array_or_value) case hash_or_array_or_value when Hash Hash[hash_or_array_or_value.map{|key, value| [key, paramify_values(value)] }] when Array hash_or_array_or_value.map {|i| paramify_values(i)} when Rack::Test::UploadedFile, ActionDispatch::Http::UploadedFile hash_or_array_or_value else hash_or_array_or_value.to_param end end
Simulate a PATCH request with the given parameters and set/volley the
response. See get
for more details.
Simulate a POST request with the given parameters and set/volley the
response. See get
for more details.
# File actionpack/lib/action_controller/test_case.rb, line 525 def process(action, http_method = 'GET', *args) check_required_ivars http_method, args = handle_old_process_api(http_method, args, caller) if args.first.is_a?(String) && http_method != 'HEAD' @request.env['RAW_POST_DATA'] = args.shift end parameters, session, flash = args # Ensure that numbers and symbols passed as params are converted to # proper params, as is the case when engaging rack. parameters = paramify_values(parameters) if html_format?(parameters) @html_document = nil unless @controller.respond_to?(:recycle!) @controller.extend(Testing::Functional) @controller.class.class_eval { include Testing } end @request.recycle! @response.recycle! @controller.recycle! @request.env['REQUEST_METHOD'] = http_method parameters ||= {} controller_class_name = @controller.class.anonymous? ? "anonymous" : @controller.class.controller_path @request.assign_parameters(@routes, controller_class_name, action.to_s, parameters) @request.session.update(session) if session @request.flash.update(flash || {}) @controller.request = @request @controller.response = @response build_request_uri(action, parameters) name = @request.parameters[:action] @controller.process(name) if cookies = @request.env['action_dispatch.cookies'] cookies.write(@response) end @response.prepare! @assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {} @request.session['flash'] = @request.flash.to_session_value @request.session.delete('flash') if @request.session['flash'].blank? @response end
Simulate a PUT request with the given parameters and set/volley the
response. See get
for more details.
# File actionpack/lib/action_controller/test_case.rb, line 582 def setup_controller_request_and_response @request = build_request @response = build_response @response.request = @request @controller = nil unless defined? @controller if klass = self.class.controller_class unless @controller begin @controller = klass.new rescue warn "could not construct controller #{klass}" if $VERBOSE end end end if @controller @controller.request = @request @controller.params = {} end end
# File actionpack/lib/action_controller/test_case.rb, line 502 def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) @request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' @request.env['HTTP_ACCEPT'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ') __send__(request_method, action, parameters, session, flash).tap do @request.env.delete 'HTTP_X_REQUESTED_WITH' @request.env.delete 'HTTP_ACCEPT' end end