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
我将其添加到我的轻量级规范助手中,现在我可以 运行 以任何顺序排列这些文件。
我在一个文件夹中有两种样式的规格,其中一种使用全脂 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
我将其添加到我的轻量级规范助手中,现在我可以 运行 以任何顺序排列这些文件。