【发布时间】:2014-01-04 08:46:00
【问题描述】:
我正在使用rspec-rails,并且我想测试我的邮件程序是否呈现了正确的视图模板。
describe MyMailer do
describe '#notify_customer' do
it 'sends a notification' do
# fire
email = MyMailer.notify_customer.deliver
expect(ActionMailer::Base.deliveries).not_to be_empty
expect(email.from).to include "cs@mycompany.com"
# I would like to test here something like
# ***** HOW ? *****
expect(template_path).to eq("mailers/my_mailer/notify_customer")
end
end
end
这是一种有效的方法吗?还是我应该做一些完全不同的事情?
更新
MyMailer#notify_customer 可能有一些逻辑(例如,取决于客户的语言环境)在不同的情况下选择不同的模板。控制器在不同情况下渲染不同的视图模板或多或少是类似的问题。用RSpec你可以写
expect(response).to render_template "....."
它有效。我正在为邮寄者寻找类似的东西。
【问题讨论】:
-
你为什么要测试它?视图路径由 mailer 方法的名称定义。这里几乎不会出错。
-
@DominikGoltermann 查看我上面的更新
标签: ruby-on-rails rspec actionmailer rspec-rails