我在尝试为我的班级编写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语句吗?或者我设置它的方式有问题吗?
提前致谢!
答案 0 :(得分:0)
解决问题的方法:
确保Chef
gem位于Gemfile中的:test
gem组中(以便在运行规范时加载)。它应该在group :development, :test
中。然后...
更改此行:
class ClassName < Chef::Knife
为:
class ClassName < ::Chef::Knife
这表示在根命名空间而不是Chef
中查找ModuleName
。
答案 1 :(得分:0)
我解决了这个问题。
事实证明,我需要修改我的spec_helper
如下:
require 'rspec'
require 'chef/knife'
require 'chef/knife/class_name'
这使我感到困惑,因为我没有“厨师/刀”中的任何其他文件。文件夹,但事实证明这是红宝石如何访问厨师宝石的刀部分。如果有其他人有东西需要添加,这将进一步启发我,请做。我仍然对此感到困惑