从rspec 2.7升级到rspec 2.12的问题

时间:2012-11-17 15:18:09

标签: rspec ruby-on-rails-3.2

我正在尝试将旧的(休眠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下运行

问题出现在Controller测试中,当他们试图伪造登录时(几乎所有控制器操作都要求您在可以执行任何操作之前登录)。

以前这是通过spec_helper.rb

中的此方法实现的
def test_login(user)
   controller.sign_in(user)
end

调用了app/helpers/sessions_helper.rb中的方法来进行实际登录。

现在它会因controller是一个未定义的变量而出错。结构似乎已经发生了变化,但我正在努力发现什么,或者如何从控制器测试中实现登录。

1 个答案:

答案 0 :(得分:0)

道歉 - 我最终设法自己找到了解释。

问题出在Gemfile中,其中包含:

group :development do
  gem 'rspec-rails', '>= 2.8.0'
end

在早期版本的rspec中运行良好,但现在不行。通过将其更改为:

group :test, :development do
  gem 'rspec-rails', '>= 2.8.0'
end

然后做一个bundle update上面记录的问题神奇地消失了。

相关问题