【问题标题】:Rspec - How to test if mailer is using proper templateRspec - 如何测试邮件是否使用正确的模板
【发布时间】:2013-06-01 08:29:10
【问题描述】:

有很多关于如何测试邮件的信息。

但是我还没有找到任何资源来测试邮件程序以检查他们是否真的使用了正确的模板。

示例:

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) 我打错了。

如何测试这个?在邮件中。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rspec mailer


    【解决方案1】:

    我为此使用email spec

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

    只需查找一些您知道是模板一部分的文本。

    【讨论】:

    • 它可以工作.. 但是.. 你知道如何在不使用外部库的情况下进行测试吗?
    • 我没有在没有库的情况下进行过测试,也没有尝试过,尽管如果你愿意,你可以深入研究代码并了解它是如何工作的。就个人而言,我更喜欢它增加的可读性,而不是避免使用外部库的纯粹性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多