2017-05-26 54 views
1

RailsGuide Action Mailer Basics,發送電子郵件到多個收件人部分,電子郵件發送到我的應用程序的正確收件人,但我的rspec測試中斷。ActionMailer測試電子郵件給多個收件人

class AdminMailer < ApplicationMailer 
    default to: Proc.new { Admin.pluck(:email) } 

我的RSpec的測試看起來像:

describe "Admin email" do 
    let(:user)   { FactoryGirl.create(:admin) } 
    let(:contact_form) { FactoryGirl.build(:contact_form) } 
    let(:mail)   { AdminMailer.contact(contact_form) } 

    it "renders the headers" do 
    expect(mail.to).to eq([user.email]) 

該錯誤消息我得到的是:

Failures: 

1) AdminMailer Admin email renders the headers 
    Failure/Error: expect(mail.to).to eq([user.email]) 

    expected: ["[email protected]"] 
     got: [] 

    (compared using ==) 

當我在IRB Admin.pluck(:email)工程測試,並將其傳送電子郵件到正確的收件人,但測試失敗。 Proc.new { Admin.pluck(:email) }在IRB中創建一個proc對象,而不是一組電子郵件。我在想實際的郵件程序可以處理這個問題,但是rspec測試不能。

任何想法如何測試在電子郵件中設置了正確的收件人?

回答

0

這有點棘手,但由於郵件程序的操作順序,您需要在設置to之前發送郵件。

it "renders the headers" do 
    mail.deliver_now 
    expect(mail.to).to eq([user.email]) 
+0

我得到完全相同的錯誤信息。以前我沒有明確地發送郵件,這是我應該做的事情嗎? – MERM

相關問題