gpt4 book ai didi

ruby - 带有循环的 Chefspec 测试资源

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:35 24 4
gpt4 key购买 nike

如果我有一个具有以下属性的 Chef Recipe

node.default["cookbook"]["directory"] = %w(/mnt/directory1 /mnt/directory2)

node["cookbook"]["directory"].each do |dir|
directory dir do
owner "user"
mode 0644"
action :create
end
end

我将如何编写一个 Chefspec 测试来处理要根据属性创建的目录数组?

感谢您的帮助。

最佳答案

你也可以这样做

%w(/mnt/directory1 /mnt/directory2).each do |dir|
expect(chef_run).to create_directory(dir)
end

更新:抱歉,我有更多的经验,现在我可以给你一个更好的答案。

是的,上面的方法有效,但如果你真的想让它变得更好,就这样做......

my_directories = %w(/test/1 /other_test/2)

let(chef_run) do
ChefSpec::SoloRunner.new do |node|
node.default["cookbook"]["directory"] = my_directories
end.converge(described_recipe)
end

my_directories.each do |dir|
expect(chef_run).to create_directory(dir)
end

这将允许您将目录列表和测试一起保存在一个文件中。如果您的 attributes.rb 中的列表发生变化,它不会中断测试。它还允许您为测试目录使用完全虚拟的名称,我发现这很有用。

关于ruby - 带有循环的 Chefspec 测试资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com