如何将rspec傀儡测试从1.x转换为2.0.1?

如何将rspec傀儡测试从1.x转换为2.0.1?,rspec,puppet,Rspec,Puppet,从rspec puppet1.0.1切换到rspec puppet2.0.1时,数百个测试开始失败。大多数测试包括错误未定义的方法资源,用于#旧测试参考变量主题,但在rspec puppet2.0.1中,这被更改为目录。此不兼容的更改会导致主版本冲突。请参阅中的评论 然而,升级旧测试的正确方法并不明显。人们不能简单地进行全局搜索,然后将主题更改为目录 一个对我有效的策略是找到问题的第一个实例并解决它。这将消除该错误以及许多后续错误。反复重复这个过程最终解决了所有问题 在上面的示例中,错误中提到的

rspec puppet
1.0.1切换到
rspec puppet
2.0.1时,数百个测试开始失败。大多数测试包括错误
未定义的方法资源,用于#旧测试参考变量
主题
,但在
rspec puppet
2.0.1中,这被更改为
目录
。此不兼容的更改会导致主版本冲突。请参阅中的评论

然而,升级旧测试的正确方法并不明显。人们不能简单地进行全局搜索,然后将
主题
更改为
目录

一个对我有效的策略是找到问题的第一个实例并解决它。这将消除该错误以及许多后续错误。反复重复这个过程最终解决了所有问题

在上面的示例中,错误中提到的第一个文件是
spec/classes/haproxy\u spec.rb:89
(第89行)。这显示为:


let(:contents){param_值(subject,'concat::fragment','haproxy-haproxy-base','content')。split(“\n”)}

将“主题”更改为“目录”,如下所示:


let(:contents){param_值(目录,'concat::fragment','haproxy-haproxy-base','content')。拆分(“\n”)}

此更改消除了接下来的7个错误

您还将看到这样的行:

verify_contents(subject, '/etc/default/haproxy', ['ENABLED=1'])

其中每一个都修复了问题中的错误以及该上下文中的所有其他错误

优化:您不必在每次更改后重新运行规范。您会注意到每次更改都会修复一系列错误。在上面的示例中,一系列7个错误都显示为
spec/classes/haproxy\u spec.rb:89
。查找第一个提到其他行号或完全不同文件的错误时,通常会发现另一行提到
主题
。在本例中,下一个示例是
spec/classes/haproxy\u spec.rb:157

可能还有其他不兼容之处,但这为我解决了主要问题

expect { subject }.to raise_error Puppet::Error, /Invalid IP address/