命名空間
方法
實例公開方法
assert_error_reported(error_class = StandardError, &block) 連結
斷言區塊應導致至少一個例外報告給 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?
來源:顯示 | 在 GitHub 上
# 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
assert_no_error_reported(&block) 連結
斷言區塊不應導致例外報告給 Rails.error
。
如果讓出的區塊中評估的程式碼未報告例外,則通過。
assert_no_error_reported do
perform_service(param: 'no_exception')
end
來源:顯示 | 在 GitHub 上
# 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