问题标签 [chefspec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 对 Ruby / ChefSpec 编码风格的反馈
我对 Ruby 比较陌生,但在过去的两周里,我一直在对 Chef 测试进行大量研究。这个测试使用 ChefSpec 和 Fauxhai,但它看起来不是很“红宝石”,我希望社区能给我一些关于编码风格的建议。有没有更好的方法来编写这样的嵌套循环?
食谱/foo/recipes/default.rb
食谱/foo/spec/default_spec.rb
欢迎任何和所有反馈。谢谢!
ruby - 存根 include_recipe 调用不采取任何行动,但仍将配方计为包含
我的食谱的默认食谱只包括其他几个食谱。我知道我可以使用以下方法测试是否包含适当的食谱:
expect(chef_run).to include_recipe 'cookbook::recipe_name
但是当我像这样对 include_recipe 调用进行存根时,这不起作用
Chef::Recipe.any_instance.stub(:include_recipe).with(anything).and_return(true)
我正在对 include_recipe 调用进行存根,因为我不想在这个规范中为我的所有食谱定义所有缺失的属性。
我原以为通过存根返回true
ChefSpec 的方法会报告它已运行并考虑包含的食谱,但事实并非如此。有任何想法吗?
ruby - 使用 ChefSpec 基于模板测试文件初始化
我的食谱中有以下模板文件创建:
以及我的 ChefSpec 测试中的以下断言:
这会导致以下失败:
这是因为我使用的不是file
资源而是template
资源。问题:如何使用 ChefSpec 测试模板资源的文件创建?
rspec - 加速 Chefspec 运行
我有很多食谱,它们都经过了ChefSpec的严格测试。我有 800 多个规范,每次在提交代码之前运行它们已经成为一个问题,因为在我的机器上运行它们大约需要 20 分钟。这使得每个规范约 0.(6) 秒,虽然不多,但加起来会花费很长时间。
是否有可能并行运行 ChefSpec/RSpec 测试或以其他方式提高速度?
ruby - ChefSpec 不应测试包含的食谱
我已经建立了一本安装 Jenkins CI 的食谱。它使用食谱中的key
和repository
资源yum
,所以我最终得到以下食谱:
当我将此食谱包含在另一个食谱中时:
我使用以下 ChefSpec 测试对此进行了测试
我的 ChefSpec 测试失败,输出如下:
(我不确定为什么它说版本 0.6.1,gem list
告诉我它使用的是 3.0.2)
sp_jenkins
食谱确实依赖于yum
食谱(metadata.rb),并且运行良好,但是,我目前正在编写的食谱不依赖于食谱yum
,因此没有可用的yum_key
andyum_repository
方法。
有没有办法防止 ChefSpec “下降”到包含的食谱/食谱中,而只是测试当前的食谱?
unit-testing - 对 Chef 提供者进行单元测试
如何为 Chef 提供者编写单元测试?
到目前为止,我们的单元测试策略将ChefSpec用于配方,并且我们将大部分有趣的逻辑填充到库中,以使逻辑更具可测试性。但是,我们仍然会遇到我们的提供者调用其他资源的问题(以及其他简单的逻辑问题)。例如:
(这不是真正的代码,只是一个简单的例子)
我们想做的是单独测试这个提供程序以检查逻辑错误。ChefSpec 具有进入 LWRP 的能力,但看起来这会迫使我们将 LWRP 放入食谱中,而且我们的许多食谱基本上都是没有食谱的 LWRP 库。我们还希望在我们的测试中保持清晰的分离,因此通过查看文件名很明显哪个组件失败了。
此外,如果 LWRP 定义中有任何语法错误,测试会自动失败,那就太好了。例如:
如果上面的语句由于属性名称定义不正确而导致测试失败,并且动作名称不存在(就像 ChefSpec 一样),那就太好了。
我想出的唯一解决方案基本上是创建一个“测试食谱”——一个单独的食谱,它用一个单一的食谱定义每个 LWRP 1:1,因此 ChefSpec 可以通过这种方式进入它。这似乎是一个合理但不太理想的解决方案。
chef-infra - 在重构环境/角色/节点期间如何使用 ChefSpec
我有一个需要清理的 Chef 存储库。配置数据分散在节点、环境和角色文件夹中的文件中。
我的想法是在重构数据期间使用ChefSpec来测试回归。由于 ChefSpec 似乎只直接支持角色,我如何在 ChefSpec 测试中使用现有节点/环境?
ruby - 列出 chef 中所有声明的包
我正在开发一些服务器无法访问互联网的基础架构,因此我必须在声明将它们安装在 Chef 上之前将包推送到本地存储库。
但是,我们遇到了 Chef 无法安装软件包的情况,因为该软件包在某些盒子上不存在,而在其他一些盒子上却成功了。
我想要做的是在节点上应用 Chef 配置之前运行 Ruby/RSpec 测试,以确保在配方上声明的包确实存在于 repo 中。
为了做到这一点,我需要能够列出我们的食谱中存在的所有包。
我的问题是:有没有在 Chef 中列出所有声明的包?我快速浏览了Chef::Platform和ChefSpec,但不幸的是找不到任何对我的问题有用的东西。
你知道哪里是最好看的地方吗?
chef-infra - NoMethodError:使用 ChefSpec 测试角色时未定义方法“run_list_for”
我正在尝试使用ChefSpec测试角色。我宁愿不使用Chef Zero(通过要求 'chefspec/server'),因为它的运行速度比 ChefSpec 本身的运行速度要慢一些。
也许我读错了文档,但看起来不需要厨师零来测试角色。但是,我目前的配置没有任何运气。这是我的测试:
角色(位于角色/my_role.json):
当我运行测试时,我收到:
如果我修改我的测试以通过 requires 手动将角色加载到 Chef Zero 中chefspec/server
,那似乎可行。我认为我不应该从编写文档的方式来模拟服务器,但我可能是错的。
难道我做错了什么?这是一个错误吗?还是我必须使用零厨师?
rspec - ChefSpec 测试出现“未找到食谱”错误
我正在尝试运行我的 ChefSpec 测试。
这是我的 ChefSpec 测试:
这是我的食谱
这是我执行 ChefSpec 测试时的错误输出
我不知道是什么问题,我认为 Berkshelf 可以解决食谱依赖项。