测试template_name传递给rails邮件方法

时间:2016-08-29 16:30:34

标签: ruby-on-rails email rspec actionmailer

我在邮件方法中将参数传递给template_name时指定mail,如下所示:

MyMailerClass < ActionMailer::Base
  def my_mailer_method
    mail(subject: 'Mail Subject', template_name: 'ValidTemplate')
  end
end

链接至Rails Guides以供参考 从mail()方法创建的类,Mail :: Message没有引用传入的template_name。是否有一个很好的方法为此编写单元测试?我试图抄袭一些方法并测试传入的内容,但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Rspec,那么您可以声明该类使用某些参数接收mail方法:

# ensure that you stub the method first so you can make assertions on it later
allow(MyMailerClass).to receive(:mail)

MyMailerClass.my_mailer_method

# verify the method was called with the proper arguments
expect(MyMailerClass).to have_received(:mail).with(template_name: "ValidTemplate")

来源:https://relishapp.com/rspec/rspec-mocks/v/3-5/docs/basics/expecting-messages

如果您使用的是其他测试框架,那么您可以使用Mocha等模拟库获得相同的结果。