我在 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。