RSpec、Mocha 和 Rubymine - 未定义的方法“mocha_setup”

RSpec, Mocha and Rubymine - Undefined method `mocha_setup'

我在一个文件夹中有两种样式的规格,其中一种使用全脂 rails 环境,带有 rspec,另一种是轻量级助手,需要单独使用 gems .

最近我在 Rubymine 中遇到了一些问题 运行。

右键单击任一样式的单个文件运行都可以。右键单击文件夹并选择 "Run > All specs in folder" 已为每个规格返回此错误:

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。我已经尝试删除 运行ning 该文件夹的配置。

有人知道是什么原因造成的吗?

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

我最终解决了这个问题:

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

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