Module: ActiveSupport::Testing::ErrorReporterAssertions
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
::ActionCable::Channel::TestCase ,
::ActionCable::Connection::TestCase ,
::ActionCable::TestCase ,
::ActionController::TestCase ,
::ActionDispatch::IntegrationTest ,
::ActionDispatch::SystemTestCase ,
::ActionMailbox::TestCase ,
::ActionMailer::TestCase ,
::ActionView::TestCase ,
::ActiveJob::TestCase ,
::ActiveSupport::TestCase ,
::Rails::Generators::TestCase
| |
Defined in: | activesupport/lib/active_support/testing/error_reporter_assertions.rb |
Instance Method Summary
-
#assert_error_reported(error_class = StandardError, &block)
Assertion that the block should cause at least one exception to be reported to Rails.error.
-
#assert_no_error_reported(&block)
Assertion that the block should not cause an exception to be reported to Rails.error.
Instance Method Details
#assert_error_reported(error_class = StandardError, &block)
Assertion that the block should cause at least one exception to be reported to Rails.error.
Passes if the evaluated code in the yielded block reports a matching exception.
assert_error_reported(IOError) do
Rails.error.report(IOError.new("Oops"))
end
To test further details about the reported exception, you can use the return value.
report = assert_error_reported(IOError) do
# ...
end
assert_equal "Oops", report.error.
assert_equal "admin", report.context[:section]
assert_equal :warning, report.severity
assert_predicate report, :handled?
# 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 = "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, ) end end
#assert_no_error_reported(&block)
Assertion that the block should not cause an exception to be reported to Rails.error.
Passes if evaluated code in the yielded block reports no exception.
assert_no_error_reported do
perform_service(param: 'no_exception')
end
# 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