【问题标题】:ActionMailer testing Email to Multiple RecipientsActionMailer 测试发送给多个收件人的电子邮件
【发布时间】:2017-10-27 14:12:34
【问题描述】:

按照RailsGuide Action Mailer Basics,向多个收件人发送电子邮件的部分,电子邮件从我的应用程序发送到正确的收件人,但是我的 rspec 测试中断。

class AdminMailer < ApplicationMailer
  default to: Proc.new { Admin.pluck(:email) }

我的 rspec 测试看起来像:

describe "Admin email" do
  let(:user)         { FactoryGirl.create(:admin) }
  let(:contact_form) { FactoryGirl.build(:contact_form) }
  let(:mail)         { AdminMailer.contact(contact_form) }

  it "renders the headers" do
    expect(mail.to).to eq([user.email])

我得到的错误信息是:

Failures:

1) AdminMailer Admin email renders the headers
   Failure/Error: expect(mail.to).to eq([user.email])

   expected: ["joe@example.com"]
        got: []

   (compared using ==)

当我在 irb Admin.pluck(:email) 中进行测试时,它可以将电子邮件发送给正确的收件人,但测试失败。 Proc.new { Admin.pluck(:email) } 在 IRB 中创建一个 proc 对象,而不是电子邮件数组。我认为实际邮件程序可以处理此问题,但 rspec 测试不能。

有什么想法可以测试电子邮件中是否设置了正确的收件人?

【问题讨论】:

    标签: ruby-on-rails email ruby-on-rails-4 rspec actionmailer


    【解决方案1】:

    这有点棘手,但由于邮件程序的操作顺序,您需要在设置 to 之前传递邮件。

     it "renders the headers" do
        mail.deliver_now
        expect(mail.to).to eq([user.email])
    

    【讨论】:

    • 我得到了完全相同的错误信息。以前我没有明确地发送邮件,这是我应该做的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2018-11-19
    • 2012-05-18
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多