ruby-on-rails – RSpec打包邮件

我有一个UserMailDispatcher类,它的工作是根据某些条件通过ActiveMailer来传递邮件.

我正在尝试使用RSpec进行测试但是我的时间很短.我想以某种方式存根测试邮件程序,看看该类是否正确传递它.这是我到目前为止所拥有的:

我的所有邮件程序都从ApplicationMailer继承:

application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  append_view_path Rails.root.join('app', 'views', 'mailers')
end

user_mail_dispatcher_spec.rb

require 'rails_helper'

describe UserMailDispatcher do 
  class UserMailer < ApplicationMailer 
    def test_mail
      mail
    end
  end

  it "mails stuff" do
    ???
  end
end

我想测试调度程序是否可以正确排队/传递邮件.但是,我似乎无法调用UserMailer.test_mail.deliver_now.我错过了模板’user_mailer / test_mail’我尝试添加type :: view到规范并使用stub_template’user_mailer / test_mail.html.erb’,但我得到了同样的错误.

我确实定义了UserMailer,但我不想在这里测试它的任何方法,因为它们更有可能改变.

关于如何最好地处理这个的任何想法?

最佳答案 当我使用DummyMailer进行测试时,我也遇到了这个问题并绕过它我只是要求mail方法返回如下的纯文本:

mail do |format|
  format.text { render plain: "Hello World!" }
end

这是documentation for it,向下滚动一下,找到正确的部分.

点赞