【发布时间】:2014-08-11 08:34:21
【问题描述】:
我正在尝试验证在调用我的 UserMailer 模型中的方法时是否设置了给定的实例变量。我正在使用 RSpec,但似乎无法弄清楚。
这是邮件:
class UserMailer < ActionMailer::Base
def client_connexion_notification(connexion)
@connexion = connexion
mail to: "test@test.com", subject: "Connexion!"
end
end
还有测试:
it "should set @connexion" do
UserMailer.client_connexion_notification("stackoverflow")
UserMailer.instance_variable_get(:@connexion).should == "stackoverflow"
end
我知道我应该在模型的一个实例上调用 instance_variable_get,但我猜 ActionMailer 的行为有所不同,因为您实际上不应该创建它的新实例。 (方法 new 是私有的)
我能想到的替代方法之一是测试使用 ActionMailer::Base.deliveries 创建的实际电子邮件的内容,但我更愿意测试变量的实际内容。
顺便说一句,我认为我可以使用 ActionMailer::Base.deliveries.last.instance_variable_get(:@connexion) 来获取它,但是不行。
【问题讨论】:
标签: ruby-on-rails ruby rspec actionmailer