0

我在一个文件夹中有两种风格的规范,其中一种使用全脂 rails 环境,使用 rspec,另一种是轻量级助手,需要单独使用 gem。

最近我在 Rubymine 中同时运行这些文件时遇到了一些问题。

右键单击任一样式的单个文件运行良好。右键单击文件夹并选择“运行>文件夹中的所有规范”已为每个规范返回此错误:

NameError: undefined local variable or method `mocha_setup' for #<RSpec::Core::ExampleGroup::Nested_1:0x0000000ca26d70>
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-expectations-2.14.5/lib/rspec/matchers/method_missing.rb:9:in `method_missing'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/mocking/with_mocha.rb:40:in `setup_mocks_for_rspec'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example.rb:299:in `run_before_each'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example.rb:113:in `block in run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example.rb:254:in `with_around_each_hooks'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example.rb:111:in `run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example_group.rb:390:in `block in run_examples'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example_group.rb:386:in `map'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example_group.rb:386:in `run_examples'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/example_group.rb:371:in `run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/command_line.rb:28:in `map'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/command_line.rb:28:in `block in run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/reporter.rb:58:in `report'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/command_line.rb:25:in `run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/runner.rb:80:in `run'
/home/ajfaraday/.rvm/gems/ruby-1.9.3-p327/gems/rspec-core-2.14.5/lib/rspec/core/runner.rb:17:in `block in autorun'

直到最近,这一直很好地结合在一起。

我可以从命令行运行所有规范,没有任何问题:

rspec --pattern spec/models/auto_ordering/*_spec.rb

这似乎是在 Rubymine 中运行此文件夹的特定内容。我已尝试使缓存无效并重新启动 IDE。我尝试删除运行该文件夹的配置。

有谁知道这可能是什么原因造成的?

更新:从那以后,我发现通过命令行调用它时似乎偶尔会发生这种情况。

4

1 回答 1

0

我最终解决了这个问题:

  • 这与 Rubymine 无关,这是一个加载顺序问题。
  • Rubymine 以严格的字母顺序运行文件,CLI 以任意顺序运行它们
  • 当完整的 rails 环境首先加载时,它工作正常。
  • 当我的精益环境首先加载时,它缺少以下配置:
RSpec.configure 做 |config|
  config.mock_framework = :mocha
结尾

我将此添加到我的轻量级规范助手中,现在我可以按任何顺序运行这些文件。

于 2015-07-08T09:58:26.787 回答