问题标签 [rspec-puppet]

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 投票
2 回答
1899 浏览

rspec - 如何检查 Puppet 资源的数组参数是否包含值

我正在编写一个包含 ::apache::vhost 资源的自定义 puppet 模块,并且想在我的 rspec 测试中验证目录参数是否包含某个值,而不复制在规范测试中大部分是硬编码的整个目录配置.

为简洁起见,我删除了大部分清单。

我可以用类似的东西来测试整个指令参数

但是目录参数很长而且是静态的,我很想避免这种情况。

rspecinclude匹配器看起来像我需要的,但我不知道如何使用它来验证参数或$allowed_subnets_directives变量

0 投票
1 回答
939 浏览

rspec-puppet - rspec-puppet 不支持 file_line 资源

我有以下带有 file_line 资源的清单

下面是rspec文件

当我运行 rake-spec 命令时出现以下错误

rspec 将不支持 file_line resporce?

因为如果我删除“file_line”资源并运行 rsepc 文件它的工作

0 投票
1 回答
591 浏览

rspec-puppet - Puppet Rspec:尚未评估类

我正在为 puppet 模块编写 rspec 测试,该模块进行以下调用:

当我运行测试时,我收到以下警告: Could not look up qualified variable 'services::service'; class services has not been evaluated

我可以通过在我的 init.pp 中包含服务模块来解决这个问题。但是,有没有办法从我的测试中要求服务模块,例如 spec_helper.rb 或测试用例本身?

0 投票
1 回答
70 浏览

testing - 是否可以在 rspec-puppet 中编写测试来检查注册表是否存在?

由于某种原因,我正在尝试使用 puppet 模块使用 exec 资源而不是使用 Package 资源来安装 .net framework 4.5.2。我想写一个测试用例来检查它是否安装。我能找到检查它是否已安装的唯一方法是检查注册表项。

我想知道我是否可以在 rspec-puppet 中编写一个测试来检查注册表是否存在?

我尝试在 serverfault 上发布这个问题,但我无法处理 Captcha,它要求它无数次,所以我不得不在这里发布。道歉。

提前致谢

0 投票
0 回答
801 浏览

ruby-on-rails - 未定义的局部变量或方法 `is_expected' for #

我写了一个测试如下:

结束结束

当我运行 rspec spec/classes/init_spec.rb; 我收到以下错误:

1) acpid 在 centos-6-x86_64 上支持的操作系统失败/错误:it { is_expected.to compile.with_all_deps } NameError: undefined local variable or method is_expected' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_1:0x000000057b9aa8> # ./spec/classes/init_spec.rb:10:inblock (5 levels) in '

0 投票
1 回答
624 浏览

ruby - 为什么在切换 ruby​​ 版本时 rspec puppet 会因未定义的方法错误而失败?

我开发了我的木偶模块,在以下 gem 文件上1.8.7运行了 ruby​​ 版本bundle install,并且 rspec 测试成功运行(木偶运行也是如此):

但是,当我在具有 ruby​​ 的 CI 服务器bundle install上执行相同操作时,我遇到了以下 rspec 失败:Gemfile1.9.3

在此处查看详细错误

常见的错误是:

使用该each_with_index方法的模板:

我不明白为什么使用不同版本的红宝石会失败?我也尝试过 ruby 2.1.1​​,结果相同。结果仅在使用 ruby​​ 的 CI 服务器上成功1.8.7(与我用于开发模块的版本相同)。

更新 1

似乎因为elastic_hosts是一个哈希映射,而我有一个字符串它失败了。我确实与trusted_hosts(另一个哈希图)一起解决了这个问题,这导致大多数测试通过但错误仍然存​​在。

在此处查看错误

注意:该错误与上面突出显示的常见错误相同。

我还用完整的内容更新了上面的模板文件。

我的配置规范文件

如果您查看我的配置规范文件,我没有default在任何地方指定为字符串,但它告诉我这是错误..

使固定

怀疑我的 init 规范类设置了默认值,并添加了 hiera 查找elastic_hoststrusted_hosts修复了该问题。

更新 2

此行为在 version1.8.7和 version >之间是可重现的1.9.3。它似乎与如何处理哈希有关。

0 投票
2 回答
3104 浏览

testing - Puppet:rake 规范找不到类 ::splunk

我正在尝试测试我的 puppet 模块,但我收到一条错误消息,指出它找不到类。

我写了几个内部使用的 Puppet 模块;既然我对木偶有兴趣,我想编写测试。由于我遇到了问题,我决定从根本上重新开始一个新的干净模块来弄清楚我需要做什么。

检查文件虽然我认为它们包含它们应该包含的内容:

清单/init.pp

规范/类/init_spec.rb

Could not find class ::splunk这是让我感到困惑的部分。

我阅读规范文件的方式是它在 init 中查找class{'splunk': ... }这可能是我误读了它,因为它们会以损坏的规范文件开始,但以防万一我尝试测试包。

清单/init.pp

规范/类/init_spec.rb

我仍然收到类似的错误消息:

很抱歉提出这样一个基本问题;我真的很感谢你的帮助。我真的很喜欢关于测试 Puppet 代码的优秀教程的链接;我很想使用 Vagrant 来确保我的代码实际上会按照我的意愿去做。

更新: 我相信我遵循了@Peter_Souter 的建议;我仍然收到找不到课程的错误。我发布了引用的文件的内容,以尝试验证我做了正确的事情,以防出现其他错误。

0 投票
2 回答
1012 浏览

rspec - 您可以覆盖 rspec-puppet 中的参数化类变量吗?

我正在对现有模块(不是我自己编写的)进行单元测试。我似乎无法将 params 类undef值覆盖为一个hash值。

params 类具有以下内容(仅摘录):

主要课程(仅摘录):

以及以下配置类(仅摘录):

在 config_spec.rb 文件中,我有以下内容:

我将 hiera 查找splunk插入到 myclass_spec.rb 文件中,希望它会覆盖:

但我继续收到以下错误:

如何覆盖splunk变量?

0 投票
1 回答
481 浏览

puppet - Rspec Puppet:定义类型迭代

  • 使用木偶 3
  • 使用 rspec-puppet 进行测试
  • 使用定义的类型迭代哈希数组
  • 出现错误,告诉我我的参数(默认为 $title 的值)无法按我的方式访问,因为它不是数组或哈希

我在 puppet 模块中使用旧式迭代,创建一个定义的类型来迭代一个哈希数组。我正在尝试在 rspec-puppet 中为此定义编写测试,尝试将哈希分配给:titleusing let()。然后$title应该将其设置为我的变量$daemon,但我的测试不断抛出错误,说这$daemon不是哈希或数组。

这是我创建定义类型的方式:

这就是我尝试设置标题的方式:

这是错误:

daemon is not a hash or array when accessing it with package_version

实际上,我对使用定义的类型进行迭代有点陌生,并且在 rspec-puppet 上非常新,所以我不确定我是否在这里遗漏了一些明显的东西。

但是为什么只抱怨package_version而不抱怨package_name呢?更重要的是:为什么它不是散列,当(我相信)我在规范文件中正确地将它设置为散列时。

我应该提一下,使用此定义类型的类的另一个测试成功完成。因此,如果我猜测的话,它似乎与我在直接测试定义时尝试设置标题的方式有关。

0 投票
2 回答
1066 浏览

rspec - 如何模拟事实来测试对事实进行十进制乘法的 Puppet 模板?

语境:

我有一个 puppet 模板,它在渲染时处理事实的count子组件。processors这个事实存在于我所有的客户身上。

该事实的用例是在对其执行十进制数学的模板行中,例如:MyConfigVar=<%= 0.9 * @processors['count'] %>在某个.erb文件中。

我想要:

  1. 将我的模板化代码部署到生产主机。
  2. 为我的模板编写健壮的单元测试,这样我就可以确定它会正确呈现,给定各种合理的事实值。

我试过的:

首先,我尝试使用印记:<%= 0.9 * @processors[:count] %>. 如果我用 rspec-puppet 模拟类似的东西facts = { :processors => { :count => 10 } },我的测试都通过了。清单应用程序不起作用;它有一个“不能相乘nil”的错误。Sigils显然已经出来了。

然后,我尝试使用字符串键:<%= 0.9 * @processors['count'] %>. 我使用 sigil ( facts = { :processors => { :count => 10 } }) 的测试没有被选中,但我的值被正确找到并乘以facts = { :processors => { 'count' => 10 } }. 然后所有的测试都通过了。但是,清单应用程序因失败而Can't coerce String into Int失败。

然后,我尝试了字符串值。模板仍然读取<%= 0.9 * @processors['count'].to_i %>,我测试了字符串和整数值,例如

测试都通过了,但清单应用程序呈现0.0了事实的价值。

问题:

两个主要问题:

  1. 我怎样才能可靠地使用这个(或任何)事实来获得内联十进制数学?
  2. 实际上,我如何才能可靠地rspec-puppet对生产代表类型进行单元测试、使用或类似的模拟值?