2017-02-27 29 views
0

鑑於一個引發異常的簡單Rails郵件程序,我該如何編寫一個rspec規範來確認引發異常?在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("[email protected]", "a subject", "a message") 
     }.to raise_error("wtf") 
    end 
    end 
end 

給出結果:

expected Exception with "wtf" but nothing was raised 

但是,漂亮很明顯,無論何時郵件方法被調用,它確實提高 「富」。

(這是一個故意失敗的規範,目的是爲了弄清楚這一點,但我期望它報告錯誤錯誤被提出,例如'Foo',而不是'wtf'。 。)

我用Rails 5.0.1和3.5.4 Rspec的

回答

1

添加deliver_now在規格:

StatusMailer.simple_message("[email protected]", "a subject", "a message").deliver_now 
+0

衛生署,是的,異常不會被拋出,直到分娩嘗試。 – jpwynn