运行单个RSpec规范失败并显示“`require':无法加载此类文件”

时间:2016-04-22 12:36:11

标签: ruby macos rspec

我正在尝试按照指示获得test-first-ruby-master,但是我遇到了多个错误。这是test-first-ruby-master中的files /目录的结构:

Gemfile     Gemfile.lock    README.md   lib     spec

lib包含ruby文件,spec包含spec文件。 我试图在我的终端上执行00_hello_spec.rb文件,但它不起作用。

我尝试了什么

  1. require "lib/00_hello.rb"
  2. require_relative "lib/00_hello.rb"
  3. 我得到的错误

    supritkumars-MacBook-Pro:test-first-ruby-master supritkumarshah$ rspec spec/00_hello_spec.rb 
    /Users/supritkumarshah/Desktop/test-first-ruby-master/spec/00_hello_spec.rb:103:in `require': cannot load such file -- lib/00_hello.rb (LoadError)
        from /Users/supritkumarshah/Desktop/test-first-ruby-master/spec/00_hello_spec.rb:103:in `<top (required)>'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `load'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `each'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `load_spec_files'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:97:in `setup'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:85:in `run'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:70:in `run'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:38:in `invoke'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/exe/rspec:4:in `<top (required)>'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `load'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `<main>'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
        from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
    

    谢谢

3 个答案:

答案 0 :(得分:1)

require失败了,因为你需要一个相对路径'lib/00_hello.rb',但它相对的目录(你的项目的根目录)不在Ruby正在寻找的目录列表中in for for files to require(加载路径$LOAD_PATH)。

有很多方法可以解决这个问题。以下是一些:

  • 告诉rspec将项目的根添加到加载路径。由于这是您当前的目录,您可以使用.

    rspec -I. spec/00_hello_spec.rb
    
  • 将您的规格更改为require_relative '../lib/00_hello'。无论当前目录或加载路径如何,这都有效 - 这在命令行程序中是个好主意,尽管对于学习项目来说并不那么重要。

  • 在B七回答后,将您的规格更改为require './lib/00_hello'。这要求您在项目的根目录中运行rspec。

  • 您甚至可以完全删除require!运行rspec时,如果当前目录包含名为lib和/或spec的子目录,则rspec会将它们添加到加载路径中。这还要求您在项目的根目录中运行rspec。如果您在运行程序时需要require(不在rspec下),此解决方案将无效。

请注意,在.rb d文件名中包含require不会导致问题,但这不是必需的。

答案 1 :(得分:1)

虽然戴夫的回答是正确的,但我更喜欢使用:

require './lib/00_hello'

答案 2 :(得分:0)

您是否尝试在测试帮助文件的顶部添加 id start_date end_date 1 8/25/2015 11/1/2015 2 9/2/2015 10/29/2015 3 9/18/2015 10/15/2015 4 8/27/2015 9/15/2015