2017-05-26 1 views
1

Après la section RailsGuide Action Mailer Basics, Envoi d'un e-mail à plusieurs destinataires, les e-mails sont envoyés aux destinataires appropriés à partir de mon application, mais mes tests rspec sont interrompus.Test d'ActionMailer Email à plusieurs destinataires

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

Mon test rspec ressemble:

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

Le message d'erreur que je reçois est:

Failures: 

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

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

    (compared using ==) 

Quand je teste en RIR Admin.pluck(:email) fonctionne et il délivre le courrier électronique aux destinataires appropriés, pourtant le test échoue. Proc.new { Admin.pluck(:email) } fait un objet proc dans IRB, au lieu d'un tableau de courriels. Je pense que l'expéditeur d'actuall peut traiter ceci mais le test de rspec ne peut pas.

Des idées comment je peux tester que les destinataires appropriés sont définis dans l'e-mail?

Répondre

0

Il est un peu difficile, mais en raison de l'ordre des opérations de l'expéditeur, vous devrez livrer le courrier avant que le to ne soit défini.

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

Je reçois exactement le même message d'erreur. Auparavant, je ne livrais pas explicitement le courrier, est-ce quelque chose que je devrais faire? – MERM