ruby-on-rails - Rspec分配局部变量?

标签 ruby-on-rails rspec

只是想知道是否有一种方法可以在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/

相关文章:

ruby-on-rails - 要在 AWS Linux EC2 实例上安装以访问 Postgres RDS 的 Postgres 包

ruby-on-rails - ExtJs4 json data.store 和 Rails

ruby-on-rails - 如何使用 rspec 从 gem stub 模块方法

ruby-on-rails - 如何测试一个 before_save 方法,包括与 rspec 的关联

ruby-on-rails - 如何在本地定义环境变量而不更改它们的定义/将它们推送到 heroku?

jquery - Devise on Rails 3 的注销链接

ruby-on-rails - prerender.io 是否可以帮助处理动态 seo 等具有动态参数的前端路由的情况?

ruby-on-rails - Rails - Capybara,从 trix-editor 填充隐藏字段

ruby-on-rails - WebMock.disable_net_connect!不工作

ruby - 在 Aptana 3 上运行 rspec