2016-10-07 12 views
0

私はユーザーがコメントを残してから、通知がrailsメーラー経由で送信される機能テストを作成しようとしています。私がメーラーの電話番号を変更して.deliver_nowに変更すると、すべてがここで働いていますが、私はそれを本番環境では望んでいません。私は、非同期メールの配信をテストすることができなければならず、テストシナリオで今すぐ配信するようにメーラを強制する必要があります。レールRSpec機能テストで非同期メーラーをテストするにはどうすればよいですか?

login_as campaign_owner 
visit campaign_path campaign 
fill_in 'Comment', with: 'Foo' 
click_on 'Submit' 
expect(page).to have_content I18n.t('comments.create.success') 
expect(campaign.comments.count).to eq 1 
expect(UserMailer.deliveries.count { |d| d.to == [campaign_watcher.email]}).to eq 1 

答えて

0

あなたはいつもあなたがで実行されているどのような環境のためにテストすることによって、あなたのメール配信の動作を変更することができます。

例えば、

if Rails.env.test? 
    UserMailer.mail_template().deliver_now 
else 
    UserMailer.mail_template().deliver_later 
end 

を、それは疑問だけど、あなたのテストが実際にどのような値

+0

私のコードでメーラーを呼び出すときに電子メールを送信していないことが判明したので、 'deliver_later'を追加すると仕様がパスされます。 'deliver_now'または' deliver_later'を呼び出さない限り、メールはまったく送信されません。 – HarlemSquirrel

関連する問題