Rspec找不到来自木偶的需求包,我可以跳过定义类型中的需求吗



我正在尝试编写rspec测试puppet代码。在我的木偶中,我调用了一个不属于这个类的define类型。(先前定义(伪代码工作在分支测试中找到,但rspec无法通过";reuire";。木偶:

$gluster_path = '/usr/libexec/zabbix-gluster'
$gluster_discovery_script = "${gluster_path}/gstatus_discovery.py"
$user_param_lines = [
"UserParameter=gluster_volume_info[*],${gluster_discovery_script} $1 $2n",
"UserParameter=gluster_storage_info[*],${gluster_discovery_script} $1n",
"UserParameter=gluster_volume_name.discovery,${gluster_discovery_script}n",
]
...
zabbix::agent::userparam { 'glusterfs':
content => join($user_param_lines, ''),
}

Rspec:

...
it {
is_expected.to contain_zabbix__agent__userparam('cnvr-zabbix-gluster')
}

定义类型:

define zabbix::agent::userparam($content = undef, $source = undef) {
...
file { "/etc/zabbix/zabbix_agentd.d/userparameter_${title}.conf":
...
require => [
Package['zabbix-agent'],
File['zabbix_agentd_dir'],
],
content => $content,
source  => $_source,
notify  => Service['zabbix-agent'],
}

zabbix代理已从其他模块安装。但错误不断提示:

Puppet::错误:在节点上的参数"require"(文件:/home/edwu/puppet/modules/zabbix/manifest/agent/userparam.pp,行:17(中找不到资源"Package[zabbix-agent]">

有没有一种方法可以跳过rspec中的这个需求检查?

有没有办法跳过rspec中的这个需求检查?

RSpec测试中报告的错误是目录编译错误。它并不是RSpec特有的。事实上,它指出了zabbix::agent::userparam中的一个真正的弱点,以及测试中的类中可能存在的缺陷。这正是编写RSpec测试的原因之一!

问题是zabbix::agent::userparam不是独立存在的。它要求声明Package['zabbix-agent'],但既没有声明它本身,也没有声明这样做的类。测试中的类继承了这个弱点,尽管离问题的中心越远,就越倾向于将其称为bug,而不是简单地称为弱点。您的类也可以声明所需的其他类,它可能应该这样做

您不能导致目录生成器让对不存在的资源的需求不被标记地通过,也不应该这样做,因为这是您希望测试向您揭示的事情之一。但是,如果您想让类中的这种弱点持续存在,那么您可以使用RSpec先决条件来让RSpec为您声明合适的类,从而实际满足需求。

相关内容

  • 没有找到相关文章

最新更新