1

如何查看退回邮件的内容?

require "rails_helper"

RSpec.describe EventsMailbox do
  it "requires a current user" do
    expect(mail_processed).to have_bounced
    # here I would like to check the content of the bounced email
  end

  def mail
    Mail.new(
      from: "dorian@dorianmarie.fr",
      subject: "Some subject",
      body: "Some body"
    )
  end

  def mail_processed
    @mail_processed ||= process(mail)
  end
end
4

1 回答 1

0

我是这样做的,关键是perform_enqueued_jobs它允许从以下位置检索电子邮件ActionMailer::Base.deliveries

require "rails_helper"

RSpec.describe EventsMailbox do
  include ActiveJob::TestHelper

  around(:each) { |example| perform_enqueued_jobs { example.run } }

  it "requires a current user", focus: true do
    expect(mail_processed).to have_bounced
    expect(last_delivery.from).to eq(["contact@socializus.app"])
    expect(last_delivery.to).to eq(["dorian@dorianmarie.fr"])
    expect(last_delivery_text).to(
      include("You need to be registered on Socializus")
    )
  end

  def mail
    Mail.new(
      from: "dorian@dorianmarie.fr",
      to: "party@events.socializus.app",
      subject: "Some subject",
      body: "Some body"
    )
  end

  def mail_processed
    @mail_processed ||= process(mail)
  end

  def last_delivery
    ActionMailer::Base.deliveries.last
  end

  def last_delivery_text
    return unless last_delivery
    text_part = last_delivery.parts.detect { _1.mime_type == "text/plain" }
    return unless text_part
    text_part.body.to_s
  end
end
于 2021-11-16T18:14:56.387 回答