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

我有一个actionmailer类和相关的开销,它的工作完美.然而,在我的单元测试(rails default minitest)中,电子邮件正文为空.这是为什么?

我的邮件类:

class TermsMailer < ApplicationMailer
  default from: "[email protected]"
  def notice_email(user,filename)
    @user = user
    @file = filename
    mail(to: "[email protected]",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 ['[email protected]'],email.from
    assert_equal ['[email protected]'],email.to
    assert_equal 'Data downloaded',email.subject
    assert_equal 'arbitrary garbage for comparison',email.body.to_s
  end
end

这个邮件程序的视图不是空白的,实际上是在电子邮件中发送正确的内容.那么为什么我的测试中的电子邮件正文空白?

解决方法

你可能有两个版本的电子邮件模板(text.erb和html.erb).

如果是这样,您可以使用email.text_part.body.to_s作为纯文本电子邮件,email.html_part.body.to_s用于HTML版本.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...