2

我在 rspec 邮件列表上问了这个问题,但没有得到回复,所以我想我会在这里尝试。

当我在 ruby​​ 1.9.2-p180 上使用 rspec 1.3.2 和 rspec-rails 1.3.4 和 rails 2.3.11

$ rake spec:models

他们都通过了。当我

$ rake spec:controllers

他们都通过了。当我

$ rake spec:views

他们都通过了。但是当我

$ rake spec

我明白了

<path to gem>/activesupport-2.3.11/lib/active_support/dependencies.rb:177: stack level too deep (SystemStackError)

我一直在修改 rake 文件,当我改变时

t.spec_files = FileList['spec/**/*_spec.rb']

在默认任务中仅点击其中一个子目录,例如

t.spec_files = FileList['spec/models/**/*_spec.rb']

然后耙规格工作。我已经为模型、控制器和视图做到了这一点,并且 rake 规范对每个都很好。但包括他们所有人都喜欢

t.spec_files = FileList['spec/models/**/*_spec.rb', 'spec/controllers/**/*_spec.rb', 'spec/views/**/*_spec.rb']

不起作用(上述相同的错误)。具有讽刺意味的是,仅包括模型和视图确实有效:

t.spec_files = FileList['spec/models/**/*_spec.rb', 'spec/views/**/*_spec.rb']

但似乎包括控制器在内的任何组合都会失败。这对我来说很奇怪,因为 rake spec:controllers 有效。除非它与文件和/或示例的数量有关。每个规范类型的文件和示例的数量是

models:      25 files, 391 examples
controllers: 26 files, 973 examples
views:       52 files, 508 examples

仅使用 rake 规范确实适用于 Ruby 1.8.7(-p302) 和 Ruby 1.9.1(-p243)。

有没有人有任何想法?我可以单独运行每个组(甚至创建一个别名来一次完成所有操作),但是 rspec 必须启动应用程序 3 次。此外,这并没有解决为什么这不适用于 ruby​​ 1.9.2。

4

1 回答 1

0

我无法解释为什么,但是当我删除

--loadby mtime
--reverse

从 spec/spec.opts 中,rake spec 再次起作用。它可能与这个线程[1]有关,但我不知道。

和平。

[1] http://www.ruby-forum.com/topic/1151108

于 2011-05-19T18:06:28.607 回答