首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有循环的chefspec测试资源

具有循环的chefspec测试资源
EN

Stack Overflow用户
提问于 2014-11-09 05:01:46
回答 2查看 1.4K关注 0票数 2

如果我有一个具有以下属性的厨师菜谱

代码语言:javascript
复制
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测试?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-09 05:21:57

代码语言:javascript
复制
expect(chef_run).to create_directory('/mnt/directory1')
expect(chef_run).to create_directory('/mnt/directory2')
票数 1
EN

Stack Overflow用户

发布于 2014-11-10 15:14:11

你也可以

代码语言:javascript
复制
%w(/mnt/directory1 /mnt/directory2).each do |dir|
  expect(chef_run).to create_directory(dir)
end

更新:对不起,多一点经验,我现在可以给你一个更好的答案。

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

代码语言:javascript
复制
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中的列表要更改,它不会破坏测试。它还允许您为测试目录使用完全虚拟的名称,我认为这是有益的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26825154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档