Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveSupport::Testing::ErrorReporterAssertions

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

assert_error_reported(error_class = StandardError, &block) Показать исходный код
# File activesupport/lib/active_support/testing/error_reporter_assertions.rb, line 88
def assert_error_reported(error_class = StandardError, &block)
  reports = ErrorCollector.record do
    _assert_nothing_raised_or_warn("assert_error_reported", &block)
  end

  if reports.empty?
    assert(false, "Expected a #{error_class.name} to be reported, but there were no errors reported.")
  elsif (report = reports.find { |r| error_class === r.error })
    self.assertions += 1
    report
  else
    message = "Expected a #{error_class.name} to be reported, but none of the " \
      "#{reports.size} reported errors matched:  \n" \
      "#{reports.map { |r| r.error.class.name }.join("\n  ")}"
    assert(false, message)
  end
end

Утверждение, что блок должен вызвать по крайней мере одно исключение, которое будет сообщено в Rails.error.

Проходит, если вычисленный код в переданном блоке сообщает об исключении, соответствующем указанному.

assert_error_reported(IOError) do
  Rails.error.report(IOError.new("Oops"))
end

Для проверки дополнительных деталей о сообщённом исключении можно использовать возвращаемое значение.

report = assert_error_reported(IOError) do
  # ...
end
assert_equal "Oops", report.error.message
assert_equal "admin", report.context[:section]
assert_equal :warning, report.severity
assert_predicate report, :handled?
assert_no_error_reported(&block) Показать исходный код
# File activesupport/lib/active_support/testing/error_reporter_assertions.rb, line 62
def assert_no_error_reported(&block)
  reports = ErrorCollector.record do
    _assert_nothing_raised_or_warn("assert_no_error_reported", &block)
  end
  assert_predicate(reports, :empty?)
end

Утверждение, что блок не должен вызывать исключение, которое будет сообщено в Rails.error.

Проходит, если вычисленный код в переданном блоке не сообщает об исключении.

assert_no_error_reported do
  perform_service(param: 'no_exception')
end

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

Spec-Zone.ru

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