Spec-Zone.ru › Ruby on Rails 7.2

модуль ActionView::TestCase::Behavior::ClassMethods

Атрибуты

helper_class[W]

Открытые методы экземпляра

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 183
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}(...)                    # def current_user(...)
                _test_case.send(:'#{method}', ...)  #   _test_case.send(:'current_user', ...)
              end                                   # end
            end_eval
          end
        end
new(*) Показать исходный код
# File actionview/lib/action_view/test_case.rb, line 187
def new(*)
  include_helper_modules!
  super
end
Вызывает метод суперкласса
register_parser(format, callable = nil, &block) Показать исходный код
# 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

Регистрирует вызываемый объект для разбора отрендеренного содержимого для заданного формата шаблона.

Каждый зарегистрированный парсер также определит метод-помощник #rendered.[FORMAT], где [FORMAT] соответствует значению аргумента format.

По умолчанию, ActionView::TestCase определяет парсеры для:

  • :html - возвращает экземпляр Nokogiri::XML::Node

  • :json - возвращает экземпляр ActiveSupport::HashWithIndifferentAccess

Эти предварительно зарегистрированные парсеры также определяют соответствующие методы-помощники:

  • :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, повторно зарегистрируйте парсер :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
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

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

Spec-Zone.ru

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