我正在学习为我的厨师烹饪书编写集成测试。是否可以在我的测试中引用attributes
文件夹中的变量?
我的测试是为了确保正确安装httpd
和php
。但是,我还有其他要检查的软件包。
%w(httpd php).each do |rpm_package|
describe package(rpm_package) do
it { should be_installed }
end
end
default['ic_apachephp']['php_packages'] = [
'php-mysqlnd',
'php-mbstring',
'php-gd',
'php-xml',
'php'
]
答案 0 :(得分:3)
是的,这是可能的,但不是"直接"。 Matt Wrock在blog entry中描述了它。
必要的步骤是:
添加包含具有以下内容的配方(将节点属性转储到指定的JSON文件中)的食谱(例如,在export-node
下面称为test/fixtures/cookbooks/
):
ruby_block "Save node attributes" do
block do
IO.write("/tmp/kitchen_chef_node.json", node.to_json)
end
end
将此食谱添加到.kitchen.yml
使用
在inspec测试中加载node
对象
node = json('/tmp/kitchen_chef_node.json').params
请注意,您必须手动选择正确的属性优先级(自动/默认/正常/覆盖),因为它们未合并。
您可以在本食谱中找到我的一个例子:TYPO3-cookbooks/t3-pdns。
编辑:我忘记了向Berkshelf讲述该食谱的步骤。添加到您的Berksfile
:
group :integration do
cookbook 'export-node', path: 'test/fixtures/cookbooks/export-node'
end