Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Rspec puppet测试自定义类型?_Rspec_Puppet - Fatal编程技术网

如何使用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

我正在尝试使用rspec puppet测试一个定制的_类型

傀儡代码

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示例。请您发布此问题的答案,因为这样可以避免创建许多符号链接。我曾尝试模拟
自定义类型
,但无法使其正常工作。我将创建一个后续问题。