Rspec 无法运行具有数据包的chefspec测试

Rspec 无法运行具有数据包的chefspec测试,rspec,chef-infra,chefspec,databags,Rspec,Chef Infra,Chefspec,Databags,我正在尝试使用chefspec运行单元测试。我在食谱中添加了数据包。没有数据包,chefspec测试运行良好。添加数据包后,chefspec显示以下错误: 1) database::prerequisites installs a package Failure/Error: let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'oracle', version: '7.2').converge(described_recipe

我正在尝试使用chefspec运行单元测试。我在食谱中添加了数据包。没有数据包,chefspec测试运行良好。添加数据包后,chefspec显示以下错误:

 1) database::prerequisites installs a package
     Failure/Error: let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'oracle', version: '7.2').converge(described_recipe) }
 Net::HTTPServerException:
   404 "Not Found "
 # /tmp/chefspec20170616-8187-olziw2file_cache_path/cookbooks/database/recipes/prerequisites.rb:9:in `from_file'
 # ./prerequisites_spec.rb:4:in `block (2 levels) in <top (required)>'
 # ./prerequisites_spec.rb:25:in `block (2 levels) in <top (required)>'
配方文件:

my_secret_key = Chef::EncryptedDataBagItem.load_secret("/etc/secret_key")
passwords = Chef::EncryptedDataBagItem.load("databags", "databag_passwords", my_secret_key)

你能建议如何解决这个问题吗。我只在chef工作站上运行测试。

您需要在测试服务器中创建数据包,演示如何使用
ServerRunner
执行此操作,或者您可以使用rspec模拟并模拟
load\u secret
load
方法。我更喜欢后者,因为它更快(就测试运行时间而言)和更多的单位y,但这取决于您。

为什么不使用
data\u bag\u item
recipe DSL方法()?谢谢您的建议。但我还是犯了同样的错误。厨师菜谱跑得很好。但测试给出了同样的错误。
my_secret_key = Chef::EncryptedDataBagItem.load_secret("/etc/secret_key")
passwords = Chef::EncryptedDataBagItem.load("databags", "databag_passwords", my_secret_key)