我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,但这是同样的问题......
我很乐意阅读任何有用的文章......谢谢
答案 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。这也可以防止疯狂的加载路径错误。所以我建议每个项目使用它。