ruby-on-rails - 在Rails中,为什么仅在测试中我的邮件正文为空?

标签 ruby-on-rails unit-testing email actionmailer minitest

我有一个actionmailer类和相关的开销,它运行完美。但是,在我的单元测试(rails默认为minitest)中,电子邮件正文为空。这是为什么?

我的邮件类:

class TermsMailer < ApplicationMailer
  default from: "info@domain.com"
  def notice_email(user,filename)
    @user = user
    @file = filename
    mail(to: "info@domain.com", subject: 'Data downloaded')
  end
end

我的测试:
require 'test_helper'

class TermsMailerTest < ActionMailer::TestCase
  test "notice" do
    email = TermsMailer.notice_email(users(:me),'file.ext').deliver_now
    assert_not ActionMailer::Base.deliveries.empty?
    assert_equal ['info@domain.com'], email.from
    assert_equal ['info@domain.com'], email.to
    assert_equal 'Data downloaded', email.subject
    assert_equal 'arbitrary garbage for comparison', email.body.to_s
  end
end

该邮件程序的 View 不是空白,并且正确的内容实际上是在电子邮件中发送的。那么,为什么我的测试中的电子邮件正文为空白?

最佳答案

您可能有两个版本的电子邮件模板(text.erbhtml.erb)。

如果是这样,则可以将email.text_part.body.to_s用于纯文本电子邮件,并将email.html_part.body.to_s用于HTML版本。

关于ruby-on-rails - 在Rails中,为什么仅在测试中我的邮件正文为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454102/

相关文章:

ruby-on-rails - 如何从 delay_job 运行 rake 任务

ruby-on-rails - 如何在 Sinatra post 请求上测试 Mailer?

python - 如何重写django测试用例以避免不可预测的偶然失败

unit-testing - 从 ECLEmma 报告中删除测试

Android Activity 测试 - 测试重启

HTML 电子邮件 - 桌面和移动设备的不同图像

ruby-on-rails - 如何使用 Ruby 和 ActiveRecord 构建独占 IN 查询?

php - 如何从 Symfony2 服务类发送电子邮件?

html - outlook 在电子邮件签名中显示 css 代码

ruby-on-rails - Rails 和 Sqlite 问题 - 将日期与数据库时间戳进行比较