2017-05-26 32 views
1

RailsGuide Action Mailer Basicsの「複数の受信者に電子メールを送信する」のセクションに続いて、自分のアプリケーションから適切な受信者に電子メールが送信されます。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

関連する問題