Spec-Zone.ru › Ruby on Rails 8.1

module ActionView::TestCase::Behavior

Подключенные модули:
ActionView::Context, ActionDispatch::Routing::PolymorphicRoutes, AbstractController::Helpers, ActionView::Helpers, ActionView::RecordIdentifier, ActionView::RoutingUrlFor, ActiveSupport::Testing::ConstantLookup

Константы

INTERNAL_IVARS

Атрибуты

controller [RW]
output_buffer [RW]
rendered [RW]

Возвращает содержимое, отрендеренное последним вызовом render.

Возвращаемый объект ведёт себя как строка, но также предоставляет ряд методов, позволяющих анализировать строку содержимого в форматах, зарегистрированных с помощью .register_parser.

По умолчанию доступны следующие анализаторы:

.html

Преобразует содержимое rendered String в HTML. По умолчанию это означает Nokogiri::XML::Node.

test "renders HTML" do
  article = Article.create!(title: "Hello, world")

  render partial: "articles/article", locals: { article: article }

  assert_pattern { rendered.html.at("main h1") => { content: "Hello, world" } }
end

Чтобы преобразовать отрендеренное содержимое в Capybara::Simple::Node, повторно зарегистрируйте анализатор :html вызовом Capybara.string:

register_parser :html, -> rendered { Capybara.string(rendered) }

test "renders HTML" do
  article = Article.create!(title: "Hello, world")

  render partial: article

  rendered.html.assert_css "h1", text: "Hello, world"
end

.json

Преобразует содержимое rendered String в JSON. По умолчанию это означает ActiveSupport::HashWithIndifferentAccess.

test "renders JSON" do
  article = Article.create!(title: "Hello, world")

  render formats: :json, partial: "articles/article", locals: { article: article }

  assert_pattern { rendered.json => { title: "Hello, world" } }
end
request [RW]

Публичные методы экземпляра

_routes () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 295
def _routes
  @controller._routes if @controller.respond_to?(:_routes)
end
_test_case () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 263
def _test_case
  controller._test_case
end
config () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 281
def config
  @controller.config if @controller.respond_to?(:config)
end
protect_against_forgery? () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 259
def protect_against_forgery?
  false
end
render (options = {}, local_assigns = {}, &block) Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 285
def render(options = {}, local_assigns = {}, &block)
  view.assign(view_assigns)
  @rendered << output = view.render(options, local_assigns, &block)
  output
end
rendered_views () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 291
def rendered_views
  @_rendered_views ||= RenderedViewsCollection.new
end
setup_with_controller () Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 269
def setup_with_controller
  controller_class = Class.new(ActionView::TestCase::TestController)
  @controller = controller_class.new
  @request = @controller.request
  @view_flow = ActionView::OutputFlow.new
  @output_buffer = ActionView::OutputBuffer.new
  @rendered = self.class.content_class.new(+"")

  test_case_instance = self
  controller_class.define_method(:_test_case) { test_case_instance }
end

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

Spec-Zone.ru

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