在Rspec中,如何测试Mailer引发的错误?

时间:2017-02-27 20:04:01

标签: rspec actionmailer

鉴于一个引发异常的简单Rails邮件程序,如何编写确认引发异常的rspec规范?

# status_mailer.rb
  ...
  def simple_message(addr, subject, msg_text)
    raise "Foo"
  end
  ...

#status_mailer_spec.rb
RSpec.describe StatusMailer, type: :mailer do

  describe "simple_message"  do
    it "always raises exception" do
      expect{
        StatusMailer.simple_message("a@example.com", "a subject", "a message")
      }.to raise_error("wtf")
    end
  end
end

给出结果:

expected Exception with "wtf" but nothing was raised

但是,很明显,每当调用邮件程序方法时,它确实会引发" Foo"。

(这是一个故意失败的规范,目的是解决这个问题,但我希望它报告错误错误,例如,' Foo'而不是pf&# 39; wtf'但它表示没有引起任何错误。)

我使用的是Rails 5.0.1和Rspec 3.5.4

1 个答案:

答案 0 :(得分:1)

在规范中添加deliver_now

StatusMailer.simple_message("a@example.com", "a subject", "a message").deliver_now