由于rspec-mocks#setup,RSpec.configure无法正常工作并且示例失败

时间:2014-06-10 10:19:34

标签: ruby rspec sinatra rspec-mocks

我3个月前开始使用rspec并且我在sinatra项目中使用它(使用ruby 2.1.1)...

我的规格中没有错误(它们已成功在其他计算机上运行)但是在我自己运行它时,每个示例都有这个...

 Failure/Error: Unable to find matching line from backtrace
 ArgumentError:
   wrong number of arguments (0 for 1)
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-mocks-2.14.6/lib/rspec/mocks.rb:10:in `setup'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/mocking_adapters/rspec.rb:17:in `setup_mocks_for_rspec'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example.rb:337:in `run_before_example'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example.rb:147:in `block in run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example.rb:299:in `with_around_example_hooks'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example.rb:145:in `run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:494:in `block in run_examples'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:490:in `map'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:490:in `run_examples'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:457:in `run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:458:in `block in run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:458:in `map'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/example_group.rb:458:in `run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:112:in `block (2 levels) in run_specs'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:112:in `map'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:112:in `block in run_specs'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/reporter.rb:54:in `report'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:108:in `run_specs'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:86:in `run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:70:in `run'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:38:in `invoke'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/gems/rspec-core-3.0.0/exe/rspec:4:in `<top (required)>'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/bin/rspec:23:in `load'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/bin/rspec:23:in `<main>'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
 # /home/vagrant/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'
 # 
 #   Showing full backtrace because every line was filtered out.
 #   See docs for RSpec::Configuration#backtrace_exclusion_patterns and
 #   RSpec::Configuration#backtrace_inclusion_patterns for more information.

==========================

我使用了这个链接(https://github.com/rspec/rspec-core/issues/754),但它不适用于我(我的应用程序位于名为projects的文件夹中)...

我也试过使用ruby 2.0.0,但这是同样的问题......

我很乐意阅读任何有用的文章......谢谢

1 个答案:

答案 0 :(得分:2)

问题是你的ruby加载了一个版本的rspec或rspec-mock,它与你的代码不对应。

所以要修复这个沙箱你的宝石。

#clean up
$ rm -rf .bundle Gemfile.lock bin vendor

#install
$ bundle install --binstubs --path vendor

#run
$ bundle exec ruby yourfile.rb
$ bin/rackup

通过这种方式,您确保您的项目使用来自gemfiles的指定gem,而不是任何可以令人惊讶地安装在您的系统上的gem。这也可以防止疯狂的加载路径错误。所以我建议每个项目使用它。