RSpec error: Uninitialized constant ModuleName::Chef (NameError)
RSpec error: Uninitialized constant ModuleName::Chef (NameError)
我在尝试为我的 class 编写 RSpec 测试时遇到错误。
相关class代码如下(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 组中(以便在 运行 规格时加载)。它应该在 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' 文件夹中没有任何其他文件,但事实证明这正是 ruby 访问厨师刀部分的方式 gem.如果其他人有什么要补充的,可以进一步启发我,请做。我仍然对此感到困惑
我在尝试为我的 class 编写 RSpec 测试时遇到错误。
相关class代码如下(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 组中(以便在 运行 规格时加载)。它应该在 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' 文件夹中没有任何其他文件,但事实证明这正是 ruby 访问厨师刀部分的方式 gem.如果其他人有什么要补充的,可以进一步启发我,请做。我仍然对此感到困惑