我正在尝试编写rspec测试傀儡代码。在我的傀儡中,我调用了一个定义类型,它不是这个类的一部分。(先前定义)在分支测试中可以找到傀儡代码,但是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 \$2\n",
"UserParameter=gluster_storage_info[*],${gluster_discovery_script} \$1\n",
"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代理已从其他模块安装。但是错误不断地提示:
错误:在节点上找不到资源‘Packagezabbix代理’在参数'require‘(文件: /home/edwu/puppet/modules/zabbix/manifests/agent/userparam.pp,行: 17)
有什么方法可以跳过rspec中的这个需求检查吗?
发布于 2020-12-05 06:21:48
有什么方法可以跳过rspec中的这个需求检查吗?
RSpec测试中报告的错误是目录编译错误。它绝不是特定于RSpec的。实际上,它指出了zabbix::agent::userparam中的一个真正的弱点,以及被测试的类中可能存在的缺陷。这正是编写RSpec测试的原因之一!
问题是zabbix::agent::userparam并不是独立存在的。它需要声明Package['zabbix-agent'],但它既不声明它自己,也不声明一个这样做的类。被测试的类继承了这个弱点,尽管离问题中心越远,你就越倾向于称它为bug,而不是简单的弱点。您的类也可以声明所需的其他类,而且它可能会这样做。
您不能让目录构建器让对不存在的资源的需求不被注意到,您也不应该这样做,因为这是您希望您的测试向您展示的事情之一。但是,如果希望允许类中的此弱点持续存在,则可以使用一种RSpec预条件使RSpec为您声明适当的类,从而实际满足需求。
https://stackoverflow.com/questions/65153278
复制相似问题