如何使用Rspec puppet测试自定义类型?
我正在尝试使用rspec puppet测试一个定制的_类型 傀儡代码如何使用Rspec puppet测试自定义类型?,rspec,puppet,Rspec,Puppet,我正在尝试使用rspec puppet测试一个定制的_类型 傀儡代码 class vim::ubuntu::config { custom_multiple_files { 'line_numbers': ensure => 'present', parent_dir => '/home', file_name => '.vimrc', line => 'set number'; } } require 's
class vim::ubuntu::config {
custom_multiple_files { 'line_numbers':
ensure => 'present',
parent_dir => '/home',
file_name => '.vimrc',
line => 'set number';
}
}
require 'spec_helper'
describe "vim::ubuntu::config" do
it do
should contain_custom_multiple_files('line_numbers').with({
'ensure' => 'present',
'parent_dir' => '/home',
'file_name' => '.vimrc',
'line' => 'set number',
})
end
end
Rspec伪码
class vim::ubuntu::config {
custom_multiple_files { 'line_numbers':
ensure => 'present',
parent_dir => '/home',
file_name => '.vimrc',
line => 'set number';
}
}
require 'spec_helper'
describe "vim::ubuntu::config" do
it do
should contain_custom_multiple_files('line_numbers').with({
'ensure' => 'present',
'parent_dir' => '/home',
'file_name' => '.vimrc',
'line' => 'set number',
})
end
end
结果
2) vim::ubuntu::config
Failure/Error: })
Puppet::Error:
Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource
type custom_multiple_files at /etc/puppet/modules/vim/spec/fixtures/modules
/vim/manifests/ubuntu/config.pp:7 on node ...
# ./spec/classes/ubuntu_config_spec.rb:10
木偶版
puppet --version
3.4.3
Eclipse上的自定义模块
class vim::ubuntu::config {
custom_multiple_files { 'line_numbers':
ensure => 'present',
parent_dir => '/home',
file_name => '.vimrc',
line => 'set number';
}
}
require 'spec_helper'
describe "vim::ubuntu::config" do
it do
should contain_custom_multiple_files('line_numbers').with({
'ensure' => 'present',
'parent_dir' => '/home',
'file_name' => '.vimrc',
'line' => 'set number',
})
end
end
结果
class vim::ubuntu::config {
custom_multiple_files { 'line_numbers':
ensure => 'present',
parent_dir => '/home',
file_name => '.vimrc',
line => 'set number';
}
}
require 'spec_helper'
describe "vim::ubuntu::config" do
it do
should contain_custom_multiple_files('line_numbers').with({
'ensure' => 'present',
'parent_dir' => '/home',
'file_name' => '.vimrc',
'line' => 'set number',
})
end
end
Rspec puppet无法找到自定义类型
自定义\u多个\u文件
,而puppet能够在puppet运行期间找到并执行自定义类型 您需要在spec/fixtures/module文件夹中保存模块的副本。您还可以使用符号链接将等级库/装置/模块的引用添加到自定义类型模块
参考:模块根目录中的.fixtures.yml文件示例:
---
fixtures:
repositories:
concat:
repo: 'git://github.com/puppetlabs/puppetlabs-concat.git'
ref: '1.0.0'
stdlib:
repo: 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
ref: '3.2.0'
symlinks:
keepalived: "#{source_dir}"
请确保包含“需要‘木偶拉布拉斯(puppetlabs)规范(spec)助手/rake(rake)任务(tasks)”在Rakefile中,并调整上述路径/repos/module名称。在发出
rspec
之前,通过执行sudo ln-s/etc/puppet/modules/custom/etc/puppet/modules/vim/spec/fixtures/modules/custom
成功找到自定义类型
和提供程序。我将创建一个脚本,将自定义
文件夹符号链接到所有puppet模块。谢谢你,我能够测试定制的木偶类型,并将继续测试。我已经对你的问题进行了投票,因为它确实为OP的问题提供了解决方案。不过,理想情况下,您只需测试外部依赖项(在本例中为自定义类型),因为您实际上不需要测试其逻辑,只需要测试使用正确参数调用它的事实。顺便说一句,如果可能的话,这在Puppet中是很不幸的。模仿自定义_类型
听起来很有趣,因为这样可以避免在所有Puppet模块中创建指向自定义_模块
的符号链接。您能否说明如何在rspec puppet中模拟自定义\u多个\u文件
?我已经检查了提供的关于Mock的链接,但是没有找到rspecpuble的Mock示例。请您发布此问题的答案,因为这样可以避免创建许多符号链接。我曾尝试模拟自定义类型
,但无法使其正常工作。我将创建一个后续问题。