RSpec (2.12.2) 让我很难受。如果我想在我的规范中引用一个类并且该类不在我的目录的根/lib
目录中,则会引发错误:
no such file to load -- test (LoadError)
似乎我的规范可以嵌套在文件夹结构中,但是当我尝试需要嵌套文件夹中的类时(例如lib/workers/conversion_worker.rb
),我得到了这个错误。
我在所有规范中都使用了 require '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 "lib/workers/class_not_found.rb" # Fails