只是想知道是否有一种方法可以在rspec中访问局部变量而不将其转换为实例变量?为了解释我的问题:
我有以下 Action :
def queue_due_mail
payments = Payment.due_soon.where(:send_reminder => true)
payments.each do |p|
PaymentMailer.delay.reminder_email(p)
p.send_reminder = false
p.save
end
redirect_to root_path
end
而且,在我的规范中,我想运行以下内容:
it "should assign nearly due payments to payments" do
Payment.stub_chain(:due_soon, :where) { [mock_payment] }
get :queue_due_mail
assigns[:payments].should eq([mock_payment])
end
问题是,仅当我将局部变量“payments”转换为“@payments”时,assigns [:payments]调用才起作用。这不是主要问题,但是我宁愿我的rspec测试不受实际代码的影响。
那么,有没有办法在rspec分配中引用局部变量?
干杯...
最佳答案
基本上没有可以将其视为黑盒测试。 rspec测试方法进入或退出方法的内容( Controller Action 是方法)。任何局部变量都应在方法结束时丢弃-因此,在方法调用结束后无法进行测试。
关于ruby-on-rails - Rspec分配局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7995957/