Chefspec:chefspec 是否首先加载所有食谱、库、自定义资源等

Chefspec: does chefspec load all the recipes, libraries, custom resources etc all initially

在我的食谱(遗留代码)中,我有大约 20 多个食谱,库目录中大约有 15 个模块,一些自定义资源。

我正在尝试为食谱添加 chefspecs,我已经为食谱 package 创建了 package_spec.rb spec 文件(我使用 chef12,所以我有一个策略文件,为此我在 spec_helper.rb 中添加了一个条目)。 在食谱中,我有一个简单的代码

package'monit' do
  action :install
end

同样,规格文件包含一个小测试:

it 'installs monit' do
  expect(chef_run).to install_package('monit')
end

但是当我尝试 运行 规范文件时:

chef rspec <spec_file_path>

它为库中的方法、自定义资源等抛出一些错误。

所以我有2分

  1. chefspec 是否每次都最初加载所有食谱、库、自定义资源等,即使是针对单个食谱的 运行ning 测试?
  2. 如果是,我们如何让它只加载与该食谱相关的那些recipe/files?

谢谢!!

其实不是ChefSpec,而是Chef本身。 ChefSpec 所做的就是重写资源操作方法,以便它们除了在某个地方写下操作被调用之外什么都不做。

ChefSpec 调用 chef-client 的 converge,并且是 Chef 本身从食谱中加载库、属性和食谱。而且,抱歉,您无法更改此行为,Che​​f 会加载整个食谱,即使您只需要其中的 1 个小食谱。