Rspec назначает локальную переменную?

Просто интересно, есть ли способ получить доступ к локальным переменным в rspec, не превращая их в переменные экземпляра? Чтобы объяснить мою проблему:

У меня есть следующее действие:

  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

Проблема в том, что вызов assigns [: payments] работает, только если я включаю локальную переменную payments в @payments. Это не серьезная проблема, но я бы предпочел, чтобы мои тесты rspec не влияли на реальный код.

Итак, есть ли способ ссылаться на локальные переменные в rspec?

Ура ...

10
задан PlankTon 3 November 2011 в 13:46
поделиться