Spec-Zone.ru › Ruby on Rails 4.1

модуль ActionController::TestCase::Behavior

Включенные модули:
ActionDispatch::TestProcess, ActiveSupport::Testing::ConstantLookup, ActionController::TemplateAssertions, ActionDispatch::Assertions

Атрибуты

request[R]
response[R]

Общедоступные методы экземпляров

build_request() Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 638
def build_request
  TestRequest.new
end
build_response(klass) Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 642
def build_response(klass)
  klass.new
end
delete(action, *args) Показать исходный код

Эмулирует запрос DELETE с заданными параметрами и устанавливает/получает ответ. Подробнее см. get.

# File actionpack/lib/action_controller/test_case.rb, line 518
def delete(action, *args)
  process(action, "DELETE", *args)
end
get(action, *args) Показать исходный код

Эмулирует запрос GET с заданными параметрами.

  • action: Действие контроллера, которое нужно вызвать.

  • parameters: HTTP-параметры, которые необходимо передать. Это может быть nil, хэш или строка, соответствующим образом закодированная (application/x-www-form-urlencoded или multipart/form-data).

  • session: Хэш параметров для сохранения в сессии. Это может быть nil.

  • flash: Хэш параметров для сохранения во всплывающем окне. Это может быть nil.

Вы также можете эмулировать запросы POST, PATCH, PUT, DELETE, HEAD и OPTIONS с помощью post, patch, put, delete, head, и options.

Обратите внимание, что метод запроса не проверяется. Различные методы доступны для повышения выразительности тестов.

# File actionpack/lib/action_controller/test_case.rb, line 494
def get(action, *args)
  process(action, "GET", *args)
end
head(action, *args) Показать исходный код

Эмулирует запрос HEAD с заданными параметрами и устанавливает/получает ответ. Подробнее см. get.

# File actionpack/lib/action_controller/test_case.rb, line 524
def head(action, *args)
  process(action, "HEAD", *args)
end
paramify_values(hash_or_array_or_value) Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 538
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
patch(action, *args) Показать исходный код

Эмулирует запрос PATCH с заданными параметрами и устанавливает/получает ответ. Подробнее см. get.

# File actionpack/lib/action_controller/test_case.rb, line 506
def patch(action, *args)
  process(action, "PATCH", *args)
end
post(action, *args) Показать исходный код

Эмулирует запрос POST с заданными параметрами и устанавливает/получает ответ. Подробнее см. get.

# File actionpack/lib/action_controller/test_case.rb, line 500
def post(action, *args)
  process(action, "POST", *args)
end
process(action, http_method = 'GET', *args) Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 551
def process(action, http_method = 'GET', *args)
  check_required_ivars

  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.recycle!
  @controller.process(name)

  if cookies = @request.env['action_dispatch.cookies']
    unless @response.committed?
      cookies.write(@response)
    end
  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
put(action, *args) Показать исходный код

Эмулирует запрос PUT с заданными параметрами и устанавливает/получает ответ. Подробнее см. get.

# File actionpack/lib/action_controller/test_case.rb, line 512
def put(action, *args)
  process(action, "PUT", *args)
end
setup_controller_request_and_response() Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 610
def setup_controller_request_and_response
  @controller = nil unless defined? @controller

  response_klass = 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          = build_request
  @response         = build_response response_klass
  @response.request = @request

  if @controller
    @controller.request = @request
    @controller.params = {}
  end
end
xhr(request_method, action, parameters = nil, session = nil, flash = nil)
Псевдоним для: xml_http_request
xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) Показать исходный код
# File actionpack/lib/action_controller/test_case.rb, line 528
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
Также псевдоним для: xhr

© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API