модуль ActionView::TestCase::Behavior
Константы
- INTERNAL_IVARS
Атрибуты
controller[RW]
output_buffer[RW]
request[RW]
Публичные методы экземпляров
# File actionview/lib/action_view/test_case.rb, line 298 def _routes @controller._routes if @controller.respond_to?(:_routes) end
# File actionview/lib/action_view/test_case.rb, line 215 def _test_case controller._test_case end
# File actionview/lib/action_view/test_case.rb, line 233 def config @controller.config if @controller.respond_to?(:config) end
# File actionview/lib/action_view/test_case.rb, line 211 def protect_against_forgery? false end
# File actionview/lib/action_view/test_case.rb, line 237
def render(options = {}, local_assigns = {}, &block)
view.assign(view_assigns)
@rendered << output = view.render(options, local_assigns, &block)
output
end # File actionview/lib/action_view/test_case.rb, line 294 def rendered @_rendered ||= self.class.content_class.new(@rendered) end
Возвращает содержимое, сгенерированное последним вызовом 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
# File actionview/lib/action_view/test_case.rb, line 243 def rendered_views @_rendered_views ||= RenderedViewsCollection.new end
# File actionview/lib/action_view/test_case.rb, line 221
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 = +""
test_case_instance = self
controller_class.define_method(:_test_case) { test_case_instance }
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.