Ruby on rails Rails 5电子邮件拦截器rspec测试

Ruby on rails Rails 5电子邮件拦截器rspec测试,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我正在努力防止向残疾用户发送意外电子邮件。我认为最好的方法是注册邮件截取器,并在每页上挂入发送电子邮件方法 这是我的初始值设定项的代码(config/initializers/email\u interceptor.rb): 然后我尝试将测试添加到我的应用程序中,这样我就可以确保用户可以注册开始,这就是测试的样子: let(:from) { 'a@foo.com' } let(:to) { 'b@foo.com' } subject { ActionMailer::Base.mail

我正在努力防止向残疾用户发送意外电子邮件。我认为最好的方法是注册邮件截取器,并在每页上挂入
发送电子邮件
方法

这是我的初始值设定项的代码(
config/initializers/email\u interceptor.rb
):

然后我尝试将测试添加到我的应用程序中,这样我就可以确保用户可以注册开始,这就是测试的样子:

  let(:from) { 'a@foo.com' }
  let(:to) { 'b@foo.com' }
  subject { ActionMailer::Base.mail(to: to, from: from).deliver }

  it 'sends emails to non existing users' do
    expect { subject }.to change(ActionMailer::Base.deliveries, :count)
  end
我得到一个错误:

Failure/Error: subject { ActionMailer::Base.mail(to: to, from: from).deliver }

     ActionView::MissingTemplate:
       Missing template action_mailer/base/mail with "mailer". Searched in:
         * "action_mailer/base"
     # ./spec/mailers/email_interceptor_spec.rb:6:in `block (2 levels) in <top (required)>'
失败/错误:主题{ActionMailer::Base.mail(to:to,from:from).deliver}
ActionView::缺少模板:
缺少模板操作\u mailer/base/mail和“mailer”。搜索:
*“行动\邮递员/基地”
#./spec/mailers/email\u interceptor\u spec.rb:6:in“block(2级)in”

我在这里做错了什么吗?我正在使用rails
5.1.0
,我想知道mailer api是否发生了变化或其他什么。

将主题更改为:

subject do 
  ActionMailer::Base.mail(to: to, from: from, subject: 'test', body: 'test').deliver
end
没有使用模板。还有其他方法,这似乎对这里描述的问题有效

subject do 
  ActionMailer::Base.mail(to: to, from: from, subject: 'test', body: 'test').deliver
end