Как проверить, что метод суперклассов выдает исключение, используя rspec с Ruby

Я пытаюсь найти лучший способ написать тест rspec, который будет указывать вызов mail(mail_content).deliver и вызывать исключение, чтобы я мог утверждать, что вызывается Rails.logger.

Я знаю, что вы не должны издеваться над тестируемым классом, но относится ли это к суперклассам?

class MyMailer < ActionMailer::Base
  default from: '[email protected]'
  default charset: 'UTF-8'
  default content_type: 'text/plain'
  default subject: 'Test'

  def send_email (to, mail_headers_hash, mail_body)
    begin
      headers mail_headers_hash
      mail_content = {to: to, body: mail_body}
      mail(mail_content).deliver

     rescue ArgumentError, StandardError => e
    Rails.logger.error "Failed to email order response - #{e}"
  end
end
end
end

person Kevin White    schedule 04.01.2012    source источник


Ответы (1)


С RSpec вы можете заглушить исключение. См. следующий фрагмент кода:

whatever.should_receive(:do_some_stuff).and_raise(ArgumentError)
person luacassus    schedule 02.04.2012