2016-09-08 22 views
1

クラスのRSpecテストを記述しようとするとエラーが発生します。 (class_name.rb)を以下のようにRSpecエラー:初期化されていない定数ModuleName :: Chef(NameError)

関連するクラスコードは、次のように

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 

へ:

ルート名前空間ではなく ModuleNameChefを探しに言う
class ClassName < ::Chef::Knife 

関連する問題