我正在尝试将旧的(休眠 1 年)项目从 Rails 3.1 和 Rspec 2.7 升级到 Rails 3.2 和 Rspec 2.12。
对 Rails 3.2 的初始升级很顺利,应用程序可以正常工作,但是在 Rspec 下运行测试会产生很多警告:
DEPRECATION WARNING: The InstanceMethods module inside ActiveSupport::Concern
will be no longer included automatically. Please define instance methods
directly in RSpec::Rails::TestUnitAssertionAdapter instead.
网络搜索建议升级到 Rspec 2.8,因为这显然是 2.7 中的一个问题,该问题已得到修复。我让“捆绑更新”一直到最新版本(2.12.0),但现在在 2.7 中运行的测试在 2.12 下根本无法运行
问题出现在控制器测试中,当他们试图伪造登录时(几乎所有控制器操作都需要您登录才能执行任何操作)。
以前这是通过这种方法实现的spec_helper.rb
def test_login(user)
controller.sign_in(user)
end
它调用了一个方法app/helpers/sessions_helper.rb
来进行实际的登录。
然而,现在它得到一个关于controller
成为未定义变量的错误。某些结构似乎已经改变,但我正在努力发现什么,或者如何从控制器测试中实现登录。