2017-05-26 6 views
1

Im Anschluss an die RailsGuide Action Mailer Basics, Abschnitt Senden von E-Mail an mehrere Empfänger, werden E-Mails von meiner App an die richtigen Empfänger gesendet, aber meine RSPETT Tests brechen.ActionMailer testet E-Mail an mehrere Empfänger

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

Mein rspec Test wie folgt aussieht:

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]) 

Die Fehlermeldung ich erhalte, ist:

Failures: 

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

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

    (compared using ==) 

Als ich in irb Admin.pluck(:email) Werken testen und liefert E-Mail an den richtigen Empfänger, Trotzdem schlägt der Test fehl. Proc.new { Admin.pluck(:email) } erstellt ein Proc-Objekt in IRB anstelle eines Arrays von E-Mails. Ich denke der actuall mailer kann damit umgehen, aber der rspec Test kann nicht.

Irgendwelche Ideen, wie ich testen kann, dass die richtigen Empfänger in der E-Mail festgelegt sind?

Antwort

0

Es ist ein bisschen schwierig, aber aufgrund der Reihenfolge der Operationen des Mailers, müssen Sie die E-Mail liefern, bevor die to gesetzt ist.

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

Ich bekomme die exakt gleiche Fehlermeldung. Zuvor habe ich die Mail nicht explizit geliefert, sollte ich das machen? – MERM

Verwandte Themen