我正在尝试按照指示获得test-first-ruby-master,但是我遇到了多个错误。这是test-first-ruby-master中的files /目录的结构:
Gemfile Gemfile.lock README.md lib spec
lib
包含ruby文件,spec
包含spec文件。
我试图在我的终端上执行00_hello_spec.rb
文件,但它不起作用。
我尝试了什么
require "lib/00_hello.rb"
require_relative "lib/00_hello.rb"
我得到的错误
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>'
谢谢
答案 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
?