簡體   English   中英

RSpec錯誤:未初始化的常量ModuleName :: Chef(NameError)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM