添加'spec_helper'时堆栈级别太深(SystemStackError)

时间:2013-03-15 08:03:13

标签: rspec ruby-on-rails-2

我正在升级旧的Rails 2.3 application并发现大多数规格都失败了。 我正努力让他们过世。

到目前为止,大多数规范文件都没有包含require 'spec_helper',但需要添加。 (不知道之前为什么不存在)。

当我将spec_helper添加到一些控制器时,我的错误堆栈级别太深(SystemStackError).

我目前正在运行如下,但我相信这可能是一个Rails 2.1应用程序开始。

  • Rails 2.3.17
  • Rspec-rails 1.3.2
  • Ruby 1.9.3

文件顶部如下所示。 堆栈太深的错误导致测试集实际上根本不运行。 如果我注释掉前三行,那么测试至少会运行,尽管都会失败。

require 'spec_helper'
require 'active_merchant'
include ActiveMerchant::Billing

describe 'AccountsController' do
...

这是我在经过一些小小的尝试之后能够起床的堆栈跟踪。

2)
stack level too deep
../bin/ruby_noexec_wrapper:14:in `<main>'
../gems/activesupport-2.3.17/lib/active_support/dependencies.rb:170:in `load_with_new_constant_marking'
../gems/ruby-1.9.3-p392@project/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:15:in `block in load_files'
../rspec-1.3.2/lib/spec/runner/example_group_runner.rb:14:in `each'
../gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:14:in `load_files'
../gems/rspec-1.3.2/lib/spec/runner/options.rb:134:in `run_examples'
../gems/rspec-1.3.2/lib/spec/runner.rb:61:in `run'
../gems/rspec-1.3.2/lib/spec/runner.rb:45:in `block in autorun'
../gems/activesupport-2.3.17/lib/active_support/dependencies.rb:186: stack level too deep (SystemStackError)

从哪里来?

1 个答案:

答案 0 :(得分:0)

尝试将include ActiveMerchant::Billing移动到describe块中,如下所示:

require 'spec_helper'
require 'active_merchant'

describe 'AccountsController' do
  include ActiveMerchant::Billing
  ...

参考文献: