我正在尝试验证在我的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)得到它,但是没有。答案 0 :(得分:0)
您可以测试生成的电子邮件中是否存在变量,如下所示:
it "should set @connexion" do
mail = UserMailer.client_connexion_notification("stackoverflow")
mail.raw_source.should include("stackoverflow")
end
这假设邮件不是多部分。