module ActionView::TestCase::Behavior
Inherits From
-
module
Rails::
Dom:: Testing:: Assertions -
module
ActionView::
Context -
module
ActionDispatch::
Routing:: PolymorphicRoutes -
module
AbstractController::
Helpers -
module
ActionView::
Helpers -
module
ActionView::
RecordIdentifier -
module
ActionView::
RoutingUrlFor -
module
ActiveSupport::
Testing:: ConstantLookup
Constants
[
:@NAME,
:@failures,
:@assertions,
:@__io__,
:@_assertion_wrapped,
:@_assertions,
:@_result,
:@_routes,
:@controller,
:@_controller,
:@_request,
:@_config,
:@_default_form_builder,
:@_layouts,
:@_files,
:@_rendered_views,
:@method_name,
:@output_buffer,
:@_partials,
:@passed,
:@rendered,
:@request,
:@routes,
:@tagged_logger,
:@_templates,
:@options,
:@test_passed,
:@view,
:@view_context_class,
:@view_flow,
:@_subscribers,
:@html_document,
]
Attributes
[RW] | controller |
|
[RW] | output_buffer |
|
[RW] | rendered |
|
[RW] | request |
Public instance methods
:method: rendered
Returns the content rendered by the last render
call.
The returned object behaves like a string but also exposes a number of methods that allows you to parse the content string in formats registered using .register_parser
.
By default includes the following parsers:
.html
Parse the rendered
content String into HTML. By default, this means a 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
To parse the rendered content into a Capybara::Simple::Node
, re-register an :html
parser with a call to 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
Parse the rendered
content String into JSON. By default, this means a 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
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 297
def _routes
@controller._routes if @controller.respond_to?(:_routes)
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 214
def _test_case
controller._test_case
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 232
def config
@controller.config if @controller.respond_to?(:config)
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 210
def protect_against_forgery?
false
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 236
def render(options = {}, local_assigns = {}, &block)
view.assign(view_assigns)
@rendered << output = view.render(options, local_assigns, &block)
output
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 242
def rendered_views
@_rendered_views ||= RenderedViewsCollection.new
end
Source code GitHub
# File actionview/lib/action_view/test_case.rb, line 220
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