2012-01-13 66 views
2

我試圖運行rspec測試。 您可以看到大部分代碼hereActionMailer :: Base.deliveries數組未被填充

也許是相關的:CoRegEmailWorker.perform包含此:

ProvisionalUser.where("unsubscribed = false AND disabled = false AND (email_sent_count < ? OR email_sent_count is NULL) AND (last_email_sent <= ? OR last_email_sent IS NULL) AND sign_up_date IS NULL", 
         ProvisionalUser::EMAIL_COUNT_LIMIT, email_sending_interval.hours.ago). 
       each{ |user| 
    begin 
    user.send_email 
    rescue Exception => ex 
    logger.error ex 
    end 
} 

和ProvisionalUser有這個方法:

def send_email 
    self.email_sent_count = self.email_sent_count.nil? ? 1 : self.email_sent_count + 1 
    self.last_email_sent = DateTime.now 
    self.disabled = true if self.email_sent_count == EMAIL_COUNT_LIMIT 
    self.save! 

    ProvisionalUserNotifier.send_registration_invite(self.id).deliver 
    end 

最後,從MailGunNotifierProvisionalUserNotifier繼承從ActionMailer繼承。

我遇到的問題是deliveryies數組沒有被填充。在我的`config/environments/test.rb'中。我有這個:

config.action_mailer.perform_deliveries = true 
config.action_mailer.delivery_method = :test 

我不確定這裏還需要什麼。

我甚至只要嘗試這個了:

require "spec_helper" 
require "action_mailer" 

describe "unsubscribe functionality" do 

    pu1 = ProvisionalUser.new 
    pu1.email = '[email protected]' 
    pu1.partner = 'partner' 
    pu1.first_name = 'joe' 
    pu1.save! 

    before(:each) do 
    ActionMailer::Base.delivery_method = :test 
    ActionMailer::Base.perform_deliveries = true 
    ActionMailer::Base.deliveries = [] 
    end 

    it "should send emails to subscribed users only" do 
    unsubscribed_user = FactoryGirl.build(:unsubscribed_user) 
    unsubscribed_user.save! 

    subscribed_user = FactoryGirl.create(:subscribed_user) 
    CoRegEmailWorker.perform 
    ActionMailer::Base.deliveries.length.should == 1 
    ActionMailer::Base.deliveries.first.email.should =~ subscribed_user.email 
    #sent.first.email.should_not =~ unsubscribed_user.email 
    #sent.first.email.should =~ subscribed_user.email 
    end 

    def sent 
    ActionMailer::Base.deliveries 
    end 

end 
+0

試圖發送電子郵件的位在哪裏? – 2012-01-13 20:06:30

+0

看到我的更新,但基本上'CoRegEmailWorker.perform'調用'ProvisionalUser'中的'user.send_email',它調用'ProvisionalUserNotifier.deliver'。 'ProvisionalUserNotifier'繼承自從'ActionMailer'繼承的'MailGunNotifier'。 – Ramy 2012-01-13 20:13:28

+0

來自'rescue Exception'塊的日誌文件中的任何內容? (我認爲這很危險,因爲它會捕獲像語法錯誤之類的東西) – 2012-01-13 20:16:01

回答

0

哇。這真的很煩人。因爲例外被吃掉了,我沒有看到我錯過了電子郵件主題的必要價值。