语境:我该如何模拟事实来测试一个在事实上做小数乘法的Puppet模板?
我有解决的,当它呈现的processors
事实count
子组件的傀儡模板。这一事实存在于我的所有客户身上。
事实的用例是在模板行中对其执行小数运算,例如:MyConfigVar=<%= 0.9 * @processors['count'] %>
在某些.erb
文件中。
我想:
- 让我的模板代码部署到生产主机。
- 为我的模板编写强大的单元测试,所以我可以确定它会正确渲染,给出事实的各种合理值。
我试了一下:
首先,我试图与印记:<%= 0.9 * @processors[:count] %>
。如果我嘲笑,与rspec傀儡,像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 %>
,我测试了字符串和整数值,例如
let(:facts) { :processors => { 'count' => '10' } }
# tests with string value
let(:facts) { :processors => { 'count' => 10 } }
# tests with integer value
测试全部通过,但明显呈现应用为0.0
的事实值。
问题:
两个主要问题:
- 我怎样才能获得在线十进制数学与此(或任何)其实的工作,可靠的?
- 如何可靠地使用
rspec-puppet
或类似的模拟值进行单元测试与生产代表类型?