2016-09-08 47 views
1

我在嘗試爲我的類編寫RSpec測試時出現錯誤。RSpec錯誤:未初始化的常量ModuleName :: Chef(NameError)

相關類代碼如下(class_name.rb):

module ModuleName 
    class ClassName < Chef::Knife 
    ... 
end 

我有關RSpec的代碼如下:(class_name_spec.rb):

require 'spec_helper' 
RSpec.describe ModuleName::ClassName do 
    ... 
end 

而且我spec_helper.rb如下:

require 'rspec' 
require 'chef/knife/class_name' 

導致如下

誤差
C:/.../project_folder/lib/chef/knife/class_name.rb:2:in '<module:ModuleName>': uninitialized constant ModuleName::Chef (NameError) 

該代碼是我正在編寫測試的工作代碼庫,因此我不相信這是代碼在class_name中的問題。我是否在我的class_name_spec.rb文件中缺少include語句?或者我設置的方式有什麼問題嗎?

在此先感謝!

回答

0

我解決了這個問題。

事實證明,我需要修改我spec_helper是如下:

require 'rspec' 
require 'chef/knife' 
require 'chef/knife/class_name' 

這迷惑了我,因爲我沒有在「廚師/刀」文件夾中的任何其他文件,但因爲它事實證明,這只是紅寶石如何訪問廚師寶石的刀部分。如果其他人有什麼補充,這將進一步啓發我,請做。我仍然有點困惑

0

檢查事項解決您的問題:

確保Chef寶石在你的Gemfile的:test寶玉組中(這樣的規格運行時加載)。它應該在group :development, :test。然後......

改變這一行:

class ClassName < Chef::Knife 

到:

class ClassName < ::Chef::Knife 

,說找Chef根命名空間,而不是ModuleName

相關問題