4

メーラーをテストする方法については、多くの情報があります。

しかし、メーラーをテストして本当に正しいテンプレートを使用しているかどうかを確認する方法に関するリソースは見つかりませんでした。

例:

class NewsletterMailer < ActionMailer::Base
  include SendGrid
  default from: -> { SystemConfiguration.newsletter_from_email }

  def send_newsletter_to_groups(newsletter_campaign_id, group_ids)
    newsletter_campaign = NewsletterCampaign.find newsletter_campaign_id
    emails = Group.where(:id => group_ids).map(&:emails).flatten
    build_and_send_email(newsletter_campaign, emails)
  end
end

タイプミスapp/views/newsletter_mailer/send_newsletter_to_group.html.erbがあります。

send_newsletter_to_group.html.erb代わりに書きましたsend_newsletter_to_groups.html.erb

私の仕様はまだ合格しています:

require "spec_helper"

describe NewsletterMailer do

  before { create(:system_configuration) }
  let(:newsletter) { create(:newsletter_campaign) }

  describe '.send_newsletter_to_groups' do
    before do
      create(:system_configuration)
      create_list(:group, 3)
      create_list(:user, 2, groups: [Group.first], newsletter_subscription: true)
      create_list(:user, 2, groups: [Group.last], newsletter_subscription: true)
      create_list(:user, 2, name: "pippo")
    end
    let(:group_ids) { Group.pluck(:id) }
    subject { NewsletterMailer.send_newsletter_to_groups(newsletter.id, group_ids) }

    its(:to) { should == User.where("name != 'pippo'").map(&:email) }
    its(:from) { should be_present }
    its(:subject) { should be_present }
  end

end

しかし、メールには本文がありません。

send_newsletter_to_group.html.erb部分的な ( ) の名前に入力ミスがあるため、空メールを送信するだけです。

これをテストする方法は?メーラーで。

4

1 に答える 1

0

これにはメール仕様を使用します。

it "should contain the user's message in the mail body" do
  @email.should have_body_text(/Jojo Binks/)
end

テンプレートの一部であることがわかっているテキストを探してください。

于 2013-06-05T15:42:15.783 に答える