[英]RSpec error: Uninitialized constant ModuleName::Chef (NameError)
我在嘗試為我的班級編寫RSpec測試時遇到錯誤。
相關的類代碼如下(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語句嗎? 或者我設置它的方式有問題嗎?
提前致謝!
解決問題的方法:
確保Chef
gem位於Gemfile中的:test
gem組中(以便在運行specs時加載它)。 它應該在group :development, :test
。 然后...
改變這一行:
class ClassName < Chef::Knife
至:
class ClassName < ::Chef::Knife
這表示在根命名空間而不是在ModuleName
查找Chef
。
我解決了這個問題。
事實證明我需要修改我的spec_helper
如下:
require 'rspec'
require 'chef/knife'
require 'chef/knife/class_name'
這讓我感到困惑,因為我在'chef / knife'文件夾中沒有任何其他文件,但事實證明這就是紅寶石如何訪問廚師寶石的刀部分。 如果有其他人有東西需要添加,這將進一步啟發我,請做。 我仍然對此感到困惑
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.