ActionMailer测试电子邮件到多个收件人

时间:2017-05-26 15:57:11

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

在关于向多个收件人发送电子邮件的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测试不能解决。

我是否可以测试如何在电子邮件中设置正确的收件人?

1 个答案:

答案 0 :(得分:0)

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

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