跳至内容 跳至搜索
方法
D
H
N
R
T

属性

[W] helper_class

实例公共方法

determine_default_helper_class(name)

# File actionview/lib/action_view/test_case.rb, line 164
def determine_default_helper_class(name)
  determine_constant_from_test_name(name) do |constant|
    Module === constant && !(Class === constant)
  end
end

helper_class()

# File actionview/lib/action_view/test_case.rb, line 184
def helper_class
  @helper_class ||= determine_default_helper_class(name)
end

helper_method(*methods)

# File actionview/lib/action_view/test_case.rb, line 170
        def helper_method(*methods)
          # Almost a duplicate from ActionController::Helpers
          methods.flatten.each do |method|
            _helpers_for_modification.module_eval <<~end_eval, __FILE__, __LINE__ + 1
              def #{method}(*args, &block)                    # def current_user(*args, &block)
                _test_case.send(:'#{method}', *args, &block)  #   _test_case.send(:'current_user', *args, &block)
              end                                             # end
              ruby2_keywords(:'#{method}')
            end_eval
          end
        end

new(*)

# File actionview/lib/action_view/test_case.rb, line 188
def new(*)
  include_helper_modules!
  super
end

register_parser(format, callable = nil, &block)

为给定模板格式注册一个可调用对象以解析呈现的内容。

每个已注册的解析器还将定义一个 #rendered.[FORMAT] 帮助器方法,其中 [FORMAT] 对应于 format 参数的值。

默认情况下,ActionView::TestCase 为以下内容定义解析器

这些预注册的解析器还定义了相应的帮助器

  • :html - 定义 rendered.html

  • :json - 定义 rendered.json

参数

format

用于呈现内容的格式的名称(作为Symbol)。

callable

解析器。一个可调用对象,它接受呈现的字符串作为其唯一参数。或者,解析器可以指定为一个块。

示例

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

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

要将呈现的内容解析为 RSS,请注册对RSS::Parser.parse的调用

register_parser :rss, -> rendered { RSS::Parser.parse(rendered) }

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

  render formats: :rss, partial: article

  assert_equal "Hello, world", rendered.rss.items.last.title
end

要将呈现的内容解析为Capybara::Simple::Node,请使用对Capybara.string的调用重新注册一个:html解析器

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
# File actionview/lib/action_view/test_case.rb, line 148
def register_parser(format, callable = nil, &block)
  parser = callable || block || :itself.to_proc
  content_class.redefine_method(format) do
    parser.call(to_s)
  end
end

tests(helper_class)

# File actionview/lib/action_view/test_case.rb, line 155
def tests(helper_class)
  case helper_class
  when String, Symbol
    self.helper_class = "#{helper_class.to_s.underscore}_helper".camelize.safe_constantize
  when Module
    self.helper_class = helper_class
  end
end