1

我在 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),但它对我不起作用(我的应用程序位于名为项目的文件夹中)......

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

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

4

1 回答 1

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。这也可以防止疯狂的加载路径错误。所以我建议在每个项目中都使用它。

于 2014-06-10T12:17:49.700 回答