/lib
目录的根目录中,则会引发错误:
no such file to load -- test (LoadError)
似乎我的规范可以嵌套在文件夹结构中,但是当我尝试并且需要一个嵌套文件夹中的类时(例如lib/workers/conversion_worker.rb
),我得到了这个错误。
我在所有规范中都使用了'spec_helper',但即使对类路径进行硬编码也会导致同样的错误。
有了这个结构:
-lib/
- class_found.rb
- workers/
- class_not_found.rb
规范如下:
# spec/workers/class_not_found_spec.rb
require "spec_helper"
require "class_not_found"
describe ClassNotFound do
it "Does something"
end
以下成功运行规范(-I标志添加$ LOAD_PATH的路径):
$ rspec spec/workers/class_not_found_spec.rb -I /Path/to/project/*
所以似乎RSpec没有在lib下面添加任何东西。
我可以使用require_relative成功要求class_not_found.rb:
require_relative "../../lib/workers/class_not_found.rb" #Succeeds
但不使用require:
require "lib/workers/class_not_found.rb" # Fails
答案 0 :(得分:7)
我不知道您是否有自己喜欢的答案,但似乎您并没有正确要求您的文件。
您的'lib/class_found.rb'
文件应该包含所有库文件,因此它应该类似于:
require 'workers/class_not_found'
并且您的spec_helper.rb
将需要lib
文件夹中的主文件,因此它应该类似于:
require 'class_found'
rspec在运行时自动加载'spec/spec_helper.rb'
,它还会自动将'lib'
文件夹添加到其LOAD_PATH
,以便正确查看并要求'lib/class_found.rb'
中的您的要求。
答案 1 :(得分:0)
根据您的目录树,文件class_not_found.rb
位于子目录workers
中。您忘记将路径添加到require
:
require 'workers/class_not_found'
是正确的。
顺便说一句:您没有require
个课程,require
个文件。