我试图验证在调用UserMailer模型中的方法时是否设置了给定的实例变量我正在使用RSpec,但似乎无法解决。
这是邮递员:
class UserMailer < ActionMailer::Base
def client_connexion_notification(connexion)
@connexion = connexion
mail to: "[email protected]", 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的行为有所不同,因为您不应该真正创建它的新实例(新方法是私有的)
我可以想到的一个替代方法是测试用ActionMailer::Base.deliveries创建的实际电子邮件的内容,但我宁愿测试变量的实际内容。
顺便说一下,我想我可以用ActoMaMeLe::Base.递送。
最佳答案
相反,您可以测试结果电子邮件中是否存在该变量,如下所示:
it "should set @connexion" do
mail = UserMailer.client_connexion_notification("stackoverflow")
mail.raw_source.should include("stackoverflow")
end
这假设邮件不是多部分的。
关于ruby-on-rails - 从Rspec中的Mailer获取实例变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24329736/