【问题标题】:RSpec, Mocha and Rubymine - Undefined method `mocha_setup'RSpec、Mocha 和 Rubymine - 未定义的方法“mocha_setup”
【发布时间】:2015-06-29 12:57:46
【问题描述】:

我在一个文件夹中有两种风格的规范,其中一种使用全脂 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。我已经尝试删除运行该文件夹的配置。

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

更新:我后来发现,当通过命令行调用它时,这似乎也偶尔发生。

【问题讨论】:

  • 您使用哪个 RubyMine 版本?您是否使用与项目中相同的 SDK 从终端启动了相同的命令?
  • 我使用的是 Rubymine 7.1.2。是的,我在命令行中使用与 Rubymine 中相同的 SDK。

标签: ruby-on-rails ruby rspec rubymine ruby-mocha


【解决方案1】:

我最终解决了这个问题:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多