问题标签 [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.

0 投票
1 回答
1356 浏览

ruby - 对 Ruby / ChefSpec 编码风格的反馈

我对 Ruby 比较陌生,但在过去的两周里,我一直在对 Chef 测试进行大量研究。这个测试使用 ChefSpec 和 Fauxhai,但它看起来不是很“红宝石”,我希望社区能给我一些关于编码风格的建议。有没有更好的方法来编写这样的嵌套循环?

食谱/foo/recipes/default.rb

食谱/foo/spec/default_spec.rb

欢迎任何和所有反馈。谢谢!

0 投票
2 回答
1865 浏览

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 调用进行存根,因为我不想在这个规范中为我的所有食谱定义所有缺失的属性。

我原以为通过存根返回trueChefSpec 的方法会报告它已运行并考虑包含的食谱,但事实并非如此。有任何想法吗?

0 投票
2 回答
2568 浏览

ruby - 使用 ChefSpec 基于模板测试文件初始化

我的食谱中有以下模板文件创建:

以及我的 ChefSpec 测试中的以下断言:

这会导致以下失败:

这是因为我使用的不是file资源而是template资源。问题:如何使用 ChefSpec 测试模板资源的文件创建?

0 投票
1 回答
970 浏览

rspec - 加速 Chefspec 运行

我有很多食谱,它们都经过了ChefSpec的严格测试。我有 800 多个规范,每次在提交代码之前运行它们已经成为一个问题,因为在我的机器上运行它们大约需要 20 分钟。这使得每个规范约 0.(6) 秒,虽然不多,但加起来会花费很长时间。

是否有可能并行运行 ChefSpec/RSpec 测试或以其他方式提高速度?

0 投票
3 回答
2867 浏览

ruby - ChefSpec 不应测试包含的食谱

我已经建立了一本安装 Jenkins CI 的食谱。它使用食谱中的keyrepository资源yum,所以我最终得到以下食谱:

当我将此食谱包含在另一个食谱中时:

我使用以下 ChefSpec 测试对此进行了测试

我的 ChefSpec 测试失败,输出如下:

(我不确定为什么它说版本 0.6.1,gem list告诉我它使用的是 3.0.2)

sp_jenkins食谱确实依赖于yum食谱(metadata.rb),并且运行良好,但是,我目前正在编写的食谱不依赖于食谱yum,因此没有可用的yum_keyandyum_repository方法。

有没有办法防止 ChefSpec “下降”到包含的食谱/食谱中,而只是测试当前的食谱?

0 投票
1 回答
1480 浏览

unit-testing - 对 Chef 提供者进行单元测试

如何为 Chef 提供者编写单元测试?

到目前为止,我们的单元测试策略将ChefSpec用于配方,并且我们将大部分有趣的逻辑填充到库中,以使逻辑更具可测试性。但是,我们仍然会遇到我们的提供者调用其他资源的问题(以及其他简单的逻辑问题)。例如:

(这不是真正的代码,只是一个简单的例子)

我们想做的是单独测试这个提供程序以检查逻辑错误。ChefSpec 具有进入 LWRP 的能力,但看起来这会迫使我们将 LWRP 放入食谱中,而且我们的许多食谱基本上都是没有食谱的 LWRP 库。我们还希望在我们的测试中保持清晰的分离,因此通过查看文件名很明显哪个组件失败了。

此外,如果 LWRP 定义中有任何语法错误,测试会自动失败,那就太好了。例如:

如果上面的语句由于属性名称定义不正确而导致测试失败,并且动作名称不存在(就像 ChefSpec 一样),那就太好了。

我想出的唯一解决方案基本上是创建一个“测试食谱”——一个单独的食谱,它用一个单一的食谱定义每个 LWRP 1:1,因此 ChefSpec 可以通过这种方式进入它。这似乎是一个合理但不太理想的解决方案。

0 投票
2 回答
1158 浏览

chef-infra - 在重构环境/角色/节点期间如何使用 ChefSpec

我有一个需要清理的 Chef 存储库。配置数据分散在节点、环境和角色文件夹中的文件中。

我的想法是在重构数据期间使用ChefSpec来测试回归。由于 ChefSpec 似乎只直接支持角色,我如何在 ChefSpec 测试中使用现有节点/环境?

0 投票
2 回答
157 浏览

ruby - 列出 chef 中所有声明的包

我正在开发一些服务器无法访问互联网的基础架构,因此我必须在声明将它们安装在 Chef 上之前将包推送到本地存储库。

但是,我们遇到了 Chef 无法安装软件包的情况,因为该软件包在某些盒子上不存在,而在其他一些盒子上却成功了。

我想要做的是在节点上应用 Chef 配置之前运行 Ruby/RSpec 测试,以确保在配方上声明的包确实存在于 repo 中。

为了做到这一点,我需要能够列出我们的食谱中存在的所有包。

我的问题是:有没有在 Chef 中列出所有声明的包?我快速浏览了Chef::PlatformChefSpec,但不幸的是找不到任何对我的问题有用的东西。

你知道哪里是最好看的地方吗?

0 投票
1 回答
2605 浏览

chef-infra - NoMethodError:使用 ChefSpec 测试角色时未定义方法“run_list_for”

我正在尝试使用ChefSpec测试角色。我宁愿不使用Chef Zero(通过要求 'chefspec/server'),因为它的运行速度比 ChefSpec 本身的运行速度要慢一些。

也许我读错了文档,但看起来不需要厨师零来测试角色。但是,我目前的配置没有任何运气。这是我的测试:

角色(位于角色/my_role.json):

当我运行测试时,我收到:

如果我修改我的测试以通过 requires 手动将角色加载到 Chef Zero 中chefspec/server,那似乎可行。我认为我不应该从编写文档的方式来模拟服务器,但我可能是错的。

难道我做错了什么?这是一个错误吗?还是我必须使用零厨师?

0 投票
1 回答
2092 浏览

rspec - ChefSpec 测试出现“未找到食谱”错误

我正在尝试运行我的 ChefSpec 测试。

这是我的 ChefSpec 测试:

这是我的食谱

这是我执行 ChefSpec 测试时的错误输出

我不知道是什么问题,我认为 Berkshelf 可以解决食谱依赖项。