2012-06-08 11 views
5

Estoy intentando probar algunos anuncios publicitarios con rspec pero las entregas están siempre vacías. Aquí está mi prueba rspec:ActionMailer :: Base.deliveryies siempre vacío en Rspec

require "spec_helper" 

describe "AccountMailer", :type => :helper do 
    before(:each) do 
    ActionMailer::Base.delivery_method = :test 
    ActionMailer::Base.perform_deliveries = true 
    ActionMailer::Base.deliveries = [] 
    end 

    it "should send welcome email to account email" do 
    account = FactoryGirl.create :account 
    account.send_welcome_email 

    ActionMailer::Base.deliveries.empty?.should be_false 
    ActionMailer::Base.deliveries.last.to.should == account.email 
    end 
end 

falla con:

1) AccountMailer should send welcome email to account email 
    Failure/Error: ActionMailer::Base.deliveries.empty?.should be_false 
     expected true to be false 

Mi función send_welcome_email se parece a esto (que es mi modelo):

def send_welcome_email 
    AccountMailer.welcome self 
end 

Y mi programa de correo:

class AccountMailer < ActionMailer::Base 
    default from: APP_CONFIG['email']['from'] 

    def welcome data 
    if data.locale == 'es' 
     template = 'welcome-es' 
    else 
     template = 'welcome-en' 
    end 

    mail(:to => data.email, :subject => I18n.t('welcome_email_subject'), :template_name => template) 
    end 
end 

¿Alguna idea? No estoy seguro de cómo proceder.

Respuesta

14

¿Has probado que funciona cuando realmente ejecutas la aplicación? Tal vez su prueba es correcta para estar fallando.

Me di cuenta de que nunca llama al deliver cuando crea el correo, entonces sospecho que la prueba está fallando porque, de hecho, el correo electrónico no se está enviando. Esperaría que su método send_welcome_email se parezca más a

def send_welcome_email 
    AccountMailer.welcome(self).deliver 
end 
+0

me acaba de ahorrar mucho tiempo. ¡gracias por esto! – MilesStanfield

Cuestiones relacionadas