问题标签 [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.
chef-infra - 在 chefSpec 中访问环境变量
我正在尝试使用 ChefSpec 为我的食谱编写一些测试。
这是我要测试的一段代码:
这里的值node[:storm_work_gen][:jar_name]
来自环境文件。我的 env 文件的内容是:
我的规格看起来像这样:
规范失败并显示消息:
我想知道当 chefSpec 运行时如何从 env 文件中获取 node[:storm_work_gen][:jar_name]
ruby - 在任何存储库中都找不到有效的 gem 'fauxhai' (~> 3.2)
我正在尝试在食谱中安装 chefspec(4.6.1) 和 fauxhai(3.2.0)。我面临以下问题“在任何存储库中都找不到有效的 gem 'fauxhai' (~> 3.2) ”。我已经在其他食谱中安装了 chefspec4.4.0 和 fauxhai2.3.0。帮我解决以下问题。
testing - 使用 Chefspec 测试 Kitchen 集成测试:使用依赖项测试食谱
我了解测试厨房遵循顺序
创建节点 > 收敛说明书 > 运行测试
创建假设强外部依赖性的测试的最佳实践是什么?
一个例子是 Kafka 食谱https://supermarket.chef.io/cookbooks/kafka。您可能知道,Kafka 是一个依赖于 Zookeeper 的消息代理应用程序,Zookeeper 是一个单独的应用程序,即消息中心。
在适当分离关注点之后,Kafka 食谱不包括 Zookeeper——它可以安装在同一主机或不同的机器上。
然而,为了简单验证 Kafka 是否正常工作(即创建简单消息),您需要运行 Zookeeper 服务器。
例如,测试可以在安装后运行这三个命令
使用 Chefspec,有没有办法存根这个外部服务器(上面的 localhost:2181 部分)?
谢谢!
arrays - 尝试安装多窗口功能时 Chefspec 无法正常工作
我有一个为 IIS 安装组件的方法。windows_feature
由于有很多,它是一个输入安装块的数组。像这样:
我关联的 Chefspec 块具有相同的数组内容馈入其中。块是这样的:
当我在食谱上运行 Chefspec 时,出现错误:
在错误中,它将 -Featurename 显示为“WebServerRole”,它为每一行(30 个条目)执行此操作。表明它只是在那个阶段迭代第一个项目。再加上我肯定在使用 stub_command 块这一事实,我不确定它为什么会出错。有人有什么想法吗?
ruby - 在配方中使用带有 registry_key 的库模块方法时出现 Chef NoMethodError
我收到错误
收敛厨师食谱时。
这是来自library/hash_operations.rb的代码的简短版本:
这是recipes/default.rb:
我猜主要问题来自于尝试在模块内的方法内使用 Chef 资源registry_key,而模块内的方法又从配方中调用。
如果我不使用模块,我有一个工作版本,但如果我想用ChefSpec测试代码,我需要一个模块,正如几篇文章指出的那样(比如这篇文章:Stubbing library class methods in ChefSpec)
上面提到的链接是我在模块内部使用end unless defined?(HashOperations)的原因。
我试过使用包含语句,它可以在评论中看到,或者在食谱的第一行中,正如一些 StackOverflow 帖子所建议的那样,没有运气。一篇文章讨论了 LWRP 的使用,但我真的不认为这里是这种情况,因为代码与这个食谱严格相关,不会在其他食谱中使用。
注意:我正在使用self. 为了使def彼此可见,否则我会收到有关generate_reg_keys_for_item_key不可用的错误。
因此,考虑到我花了很多时间寻找解决方案,包括 StackOverflow 建议的解决方案,问题是:解决此错误的最佳方法是什么,并有一个可以用ChefSpec测试的简单解决方案(虽然我并不完全排除 LWRP),我应该包括什么和如何使registry_key在收敛操作中可见?
chef-infra - Chefspec 与 Hashicorp Vault
我正在尝试使用 ChefSpec 来测试 Chef 和 Hashicorp Vault 的实现
食谱
测试
错误
如何存根 Vault 变量?这是 Hashicorp Vault,而不是 chef-Vault。
ruby - 在 ChefSpec 上模拟内核版本
我正在尝试测试linux-image-extra-#{node['kernel']['release']}
将由我的食谱安装,并且我正在尝试#{node['kernel']['release']
使用 Fauxhai 进行模拟。到目前为止,我有;
不幸的是,它没有获取该属性,并且正在产生一个显示此错误的错误;
失败/错误:expect(chef_run).to install_package("linux-image-extra-#{node['kernel']['release']}-generic")
chef-infra - 您如何使用 ChefSpec 单独对自定义厨师资源进行单元测试?
所以我正在尝试创建一个可重用的自定义资源库。该视频解释了如何做到这一点,但它没有解决单独测试资源的问题。
我知道您可以通过配方和收敛来测试资源,但我不想编写新配方只是为了测试我的资源。
我希望有某种方法可以执行具有属性的自定义资源,而无需执行以下操作:
如果你能说类似说的话
那真的很酷。
rspec - 在 Chef 单元/rspec 测试中模拟 Chef::ReservedNames::Win32::Version.new?[继续]
假设,我有以下食谱:
install_iis:
include_recipe
如果方法正在运行(块中的所有内容) ,我希望能够使用 chefspec 进行测试if
。
看完后:
标准 RSpec 如此
allow(Chef::ReservedNames::Win32::Version).to receive(:new).and_return(double('fake version'))
或类似地适用。来源: Chef unit/rspec 测试中的 Mock Chef::ReservedNames::Win32::Version.new?
我试图修改我install_iis_spec
的来模拟Chef::ReservedNames::Win32::Version
. 我的规范文件现在如下所示:
install_iis_spec:
注1:假设该should_include_recipe
方法按预期工作。
注2:看到后double('fake version')
,我认为我应该把价值'6.3'
。
虽然,当我运行时,chef exec rspec spec/unit/recipes/install_iis_spec.rb
我收到以下错误:
控制台错误:
参考: cookbooks/iis/libraries/helper.rb:44:in 'older_than_windows2008r2?' .
double('fake version')
为了定位,我必须输入什么值Windows Server 2012R2
?
有支持的版本列表吗?