2
rspec 테스트를 실행하려고합니다. 그 코드의 대부분은 here입니다. CoRegEmailWorker.perform
이 포함되어 있습니다 :ActionMailer :: Base.deliveries 배열이 채워지지 않습니다.
은 어쩌면 관련이
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
마지막으로, ActionMailer
에서 MailGunNotifier
에서 ProvisionalUserNotifier
상속을 상속한다.
문제는 배달 배열이 채워지지 않고 있다는 것입니다. 내`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
이메일을 보내려는 비트는 어디에서 왔습니까? –
내 업데이트를 참조하십시오. 그러나 기본적으로'CoRegEmailWorker.perform'은'ProvisionalUserNotifier.deliver'를 호출하는'ProvisionalUser'에서'user.send_email'을 호출합니다. 'ProvisionalUserNotifier'는'ActionMailer'에서 상속받은'MailGunNotifier'를 상속받습니다. – Ramy
'rescue Exception' 블록의 로그 파일에있는 내용은 무엇입니까? (나는 문법 오류와 같은 것들을 잡을 것이기 때문에 아주 위험하다고 생각한다) –