0

我正在尝试运行 rspec 测试,但我似乎无法让它在我的 Mac 上运行?

player_spec.rb文件包含:

require 'player'

describe Player do


end

所有其他相关文件都在同一个文件夹中

rspec player_spec.rb从命令行运行会产生以下错误:

/Users/lloyd_treleven/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
`require': cannot load such file -- player (LoadError)
  from
/Users/lloyd_treleven/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
`require'
  from /Users/lloyd_treleven/studio_game/player_spec.rb:1:in `<top
(required)>'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in
`load'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in
`block in load_spec_files'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in
`map'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in
`load_spec_files'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/command_line.rb:22:in
`run'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:69:in
`run'
  from
/Users/lloyd_treleven/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:10:in
`block in autorun'

我安装了以下 rspec gem

rspec (2.10.0)
rspec-core (2.10.1)
rspec-expectations (2.10.0)
rspec-mocks (2.10.1)

目前我已经rvm 1.13.4安装

目前我正在跑步ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin10.8.0]

当我通过 textmate 运行时,我收到以下错误消息:

NoMethodError: undefined method ‘describe’ for main:Object

我安装了 RSpec textmate 包:

mkdir -p ~/Library/Application\ Support/TextMate/Pristine\ Copy/Bundles
cd ~/Library/Application\ Support/TextMate/Pristine\ Copy/Bundles
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'

我做错了什么?

4

3 回答 3

2

找到我需要在 ruby​​ 文件顶部添加 require_relative 'player' 的答案了吗?一旦我这样做了,我就可以从命令行运行 rspec player_spec.rb 并执行测试。TextMate 仍然抛出 NoMethodError 错误。我将检查 textmate rspec bundle 安装,看看这是否正确。

于 2012-06-16T15:22:22.107 回答
0

我最近遇到了类似的事情,看起来你有两个问题:

  1. 文件加载错误:rspec 找不到您的player.rb文件
  2. 缺少方法错误:rspec 对谁负责该describe块感到困惑

由于我不确定您的文件树是如何设置的,我们就说它看起来像这样:

/studio_game
  /lib
    player.rb
  /spec
    player_spec.rb
    spec_helper.rb
  Gemfile
  Gemfile.lock
  .rspec

要解决您的问题LoadError,您需要确保您的player_spec.rb文件可以找到您的player.rb文件。你可以这样做...

# like this:
require_relative '../lib/player'

# or like this:
require 'player'

现在开始解决您缺少的describe方法错误。当我遇到这个问题时,我发现我的.rspec文件需要spec_helper,如下所示:

--require spec_helper  #<-- problematic for me
--color
--format doc

一旦我删除它,我的 rspec 套件就可以正确运行。

--color
--format doc
于 2017-09-28T21:00:28.893 回答
-1

您必须使用终端访问当前子文件夹:例如“lib”或“spec” 我得到了同样的错误,并且花了很长时间才发现:cd spec 然后rspec 00_hello_spec.rb 为我工作!

于 2016-05-04T18:24:42.900 回答