RSpec(2.12.2)給了我一個很難的時間。如果我想引用我的規格之一的類,這個類是不是在我/lib
的根目錄下,它拋出一個錯誤:RSpec只能查看我的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
所以你創建一個名爲'spec/lib/workers/class_not_found_spec.rb'的文件,寫入'require'spec_helper';模塊工人;描述ClassNotFound do ... end; end',並且rspec沒有找到源代碼? – mdesantis
@ProGNOMmers我更新了這個問題。希望現在很清楚。 – Undistraction
是你的項目一個rails應用程序?如果是的話,你應該將'spec/workers'移動到'spec/lib/workers' – mdesantis