当 puppet-rspec 存在时,为什么我会收到“类不存在”?

2023-12-14

我设置了一个新的木偶demo模块具有以下内容Gemfile当我运行一个简单的 puppet-rspec 测试时,它按预期工作。

Gemfile

source 'https://rubygems.org'


if puppetversion = ENV['PUPPET_GEM_VERSION']
  gem 'puppet', puppetversion, :require => false
else
  gem 'puppet', '3.7.5' 
end


gem 'metadata-json-lint'
gem 'puppetlabs_spec_helper', '>= 0.1.0'
gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0'
gem 'rspec-puppet-facts' 


# rspec must be v2 for ruby 1.8.7
if RUBY_VERSION >= '1.8.7' and RUBY_VERSION < '1.9'
  gem 'rspec', '~> 2.0'
end

但是,当我克隆现有模块时(silex)并将 Gemfile 更新为如上所示,然后运行:

bundle exec rake spec

我收到以下错误:

vagrant$ bundle exec rake spec
/usr/bin/ruby -S rspec spec/classes/init_spec.rb --color
F


Failures:


  1) silex with defaults for all parameters should contain Class[silex]
     Failure/Error: it { should contain_class('silex') }
     Puppet::Error:
       Could not find class silex for centos65-box-1 on node centos65-box-1
     # ./spec/classes/init_spec.rb:5


Finished in 0.31963 seconds
1 example, 1 failure


Failed examples:


rspec ./spec/classes/init_spec.rb:5 # silex with defaults for all parameters should contain Class[silex]

该类已存在,我已经完成了木偶运行。有人可以帮助我理解为什么会出现这种情况吗?

更多信息

    # Tree
    .
    ├── files
    │   └── httpd.patch
    ├── Gemfile
    ├── Gemfile.lock
    ├── lib
    │   └── facter
    │       └── vendor_dir.rb
    ├── manifests
    │   ├── backup.pp
    │   ├── config.pp
    │   ├── init.pp
    │   ├── install.pp
    │   ├── params.pp
    │   └── service.pp
    ├── metadata.json
    ├── Rakefile
    ├── README.md
    ├── spec
    │   ├── classes
    │   │   └── init_spec.rb
    │   ├── fixtures
    │   │   ├── manifests
    │   │   │   └── site.pp
    │   │   └── modules
    │   └── spec_helper.rb
    ├── templates
    │   └── var
    │       └── config
    │           └── settings.json.erb
    └── tests
        └── init.pp




# spec_helper.rb
require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts'
include RspecPuppetFacts



#init_spec.rb
require 'spec_helper'
describe 'silex' do

  context 'with defaults for all parameters' do
    it { should contain_class('silex') }
  end
end

原来我错过了module in the fixtures目录导致could not find class error.

立即解决方案

我必须跑rspec-puppet-init这更新了我的spec目录包括spec_helper.rb文件到以下内容:



    require 'rspec-puppet'

    fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))

    RSpec.configure do |c|
      c.module_path = File.join(fixture_path, 'modules')
      c.manifest_dir = File.join(fixture_path, 'manifests')
      c.environmentpath = File.join(Dir.pwd, 'spec')
    end
  

详细解决方案

以下是我为使其发挥作用而采取的所有步骤。如果这是最好的方法,我很想得到一些反馈:

1. 添加到Gemfile并运行:



    #You may need to tweak the versions depending on what your environment is like.
    bundle install
  

Gemfile:

source 'https://rubygems.org'

if puppetversion = ENV['PUPPET_GEM_VERSION']
  gem 'puppet', puppetversion, :require => false
else
  gem 'puppet', '3.7.5'
end


gem 'metadata-json-lint'
gem 'puppetlabs_spec_helper', '>= 0.1.0'
gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0'
gem 'rspec-puppet-facts'


# rspec must be v2 for ruby 1.8.7
if RUBY_VERSION >= '1.8.7' and RUBY_VERSION < '1.9'
  gem 'rspec', '~> 2.0'
end

2. 初始化你的spec目录。从模块根目录运行。

bundle exec rspec-puppet-init 

3.我必须更新自动生成的Rakefile至以下内容:

require 'rubygems'
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]

desc "Validate manifests, templates, and ruby files"
task :validate do
  Dir['manifests/**/*.pp'].each do |manifest|
    sh "puppet parser validate --noop #{manifest}"
  end
  Dir['spec/**/*.rb','lib/**/*.rb'].each do |ruby_file|
    sh "ruby -c #{ruby_file}" unless ruby_file =~ /spec\/fixtures/
  end
  Dir['templates/**/*.erb'].each do |template|
    sh "erb -P -x -T '-' #{template} | ruby -c"
  end
end

4. Run bundle exec rake spec从模块根目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 puppet-rspec 存在时,为什么我会收到“类不存在”? 的相关文章

  • 如何确定 rspec 控制器测试的主题?

    所以除了好奇之外 我没有什么充分的理由需要知道这一点 最好的理由 但我不确定这里发生了什么 背景 我正在研究 RSpec 书并更新示例 第 24 章 Rails 控制器有一个消息控制器的测试 spec controllers message
  • RSpec:如何编写一个需要特定输出但不关心方法的测试?

    我正在尝试了解测试驱动设计 特别是 RSpec 但我在使用 RSpec 书中的一些示例时遇到了麻烦 在书中 我们测试 STDOUT 上的输出 如下所示 output double output game Game new output sh
  • 在 Rails 初始化程序运行之前运行 rspec “before” 块

    我想运行 rspecbefore阻止设置一些东西beforeRails 初始化程序运行 因此我可以测试初始化 程序应该做什么 这可能吗 如果初始化程序中的逻辑足够复杂 则应该对其进行测试 您应该将其提取到一个帮助程序中 您可以在不处于初始化
  • RSpec 和 ActiveModel

    我有一个模块 它包含 activemodel 我想使用 rspec 测试它 这是我到目前为止的设置 lib my module base rb my module rb spec my module spec rb spec helper
  • 为什么我收到“不建议在全局范围内包含 Capybara::DSL!”

    每次我运行规范时 即使规范通过了 例如 rspec spec integration view homepage spec rb including Capybara DSL in the global scope is not recom
  • rSpec 和 Rails3 中的存根设计

    如何使用 rSpec 在 Rails 3 中存根 Devise 我有一个UsersController and a User模型 目前 这两者都与 Devise 相关 我正在编写控制器规格 但我真的很难实现作为 Devise 的期望sign
  • 将标头附加到 Rspec 控制器测试

    我正在尝试为我的控制器编写测试 该控制器接收来自外部服务的请求 到目前为止 这是我的测试 describe ApplyController do context when valid do let parameters do file Fi
  • rspec 中的相关测试

    我编写功能测试 并且我需要进行的测试取决于之前测试的通过情况 假设我有一个按钮 可以打开一个窗口 其中有一个功能 也就是说 为了检查此功能 我需要首先检查按钮的正确操作 即打开窗口或不起作用 因此 我需要这样做 如果单击按钮时测试失败 则测
  • 红宝石 Rspec。获取所有测试的列表

    我对 Rspec 进行了一些测试 如下所示 describe description do before each do do before end it something 1 do end it something 2 do end e
  • 页面内容中 html 实体的 Rspec 测试

    我正在编写一个请求规范 并想测试字符串 Reports Aging Reports 是否存在 如果我直接将字符放入匹配器表达式中 我会收到错误 无效的多字节字符 所以我尝试了以下操作 page should have content Rep
  • Fixture_file_upload 有 {file} 不存在错误

    下面是我的上传文件的测试代码 describe file process do before each do debugger file fixture file upload test csv text csv end it should
  • rspec 视图存根和部分视图

    我正在使用 RSpec Rails 3 2 8 上的 2 12 测试视图 我正在使用 CanCan 有条件地在页面上显示某些元素 这需要一个控制器方法 current user 在我的一些规范中 我已经能够删除 current user 例
  • 在测试环境中设置default_url_options似乎不起作用

    我已将以下代码放入我的config environments test rb file config action mailer default url options host gt localhost 3000 但是当我运行测试时 所有
  • 为铁路中的自引用关联建立工厂

    我有一个典型的要求 我必须按如下方式处理用户对象 user referrer and user referrers 基本上 用户可以推荐多个人 并且一个人应该由一位特定用户推荐 所以我按如下方式建立关联 他们工作得很好 class User
  • RSpec 抛出分段错误

    有时我的测试套件会无缘无故地抛出分段错误 这是输出 Users Test rvm gems ruby 1 9 3 p392 gems activerecord 3 2 9 lib active record relation query m
  • 使用 RSpec 请求规范授权请求时,access_token 无效

    我正在尝试测试CredentialsController 使用 RSpec 请求规范在生产中运行良好 Code 控制器 class CredentialsController lt ApplicationController before
  • Selenium 找不到“spec”文件夹

    因此 我正在尝试建立本地系统来帮助完成仅使用 Rails 的雇主的现有项目 他们希望我主要关注 rspec 测试 因为该项目几乎可以正常运行 我需要充实他们错过的东西 但是 我无法获取 rake spec 来构建我的测试文件夹 事实上 测试
  • 如何使用 rspec 测试 ActionCable 和 Devise?

    在我的 Rails 5 1 应用程序中 我使用设备进行身份验证和 ActionCable 我的 ActionCable 连接如下所示 module ApplicationCable class Connection lt ActionCab
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam

随机推荐

  • POST 到服务器,接收 PDF,使用 jQuery 交付给用户

    我有一个链接 用户单击该链接即可获取 PDF 在 jQuery 中 我创建了一个对服务器的 POST ajax 调用来获取 PDF PDF 带有正确的内容标题等 通常会导致浏览器打开 Reader 插件 或允许用户保存 PDF 由于我通过
  • iOS 内存泄漏

    我运行了 Leaks 工具来测试我的应用程序是否有任何泄漏 它显示我有一些泄漏 我不是修复泄漏的专家 我想知道是否 我有泄漏 并且 我应该做什么来解决它 你看起来似乎有泄漏 但看起来并不严重 您可以单击内存地址旁边的小箭头 它应该会显示一个
  • Python - 为什么在类中使用“self”?

    这两个类有何不同 class A x 3 class B def init self self x 3 有什么显着差异吗 A x is a 类变量 B s self x is an 实例变量 i e A s x在实例之间共享 通过像列表这样
  • 正确设置动态下拉菜单的回调

    我正在尝试创建一个 Dash 仪表板 其中一个框中的下拉选项取决于之前的下拉选择 该数据由两个字典组成 每个字典有两个键 每个键都包含一个带有几列的数据框 确切数据 from jupyter dash import JupyterDash
  • 如何创建一个胖罐子?

    有了SpringBoot 你就拥有了 SpringBootApplication注解 但是与简洁的 Java Spark 框架等效的是什么呢 IntelliJ 创建了一个 Maven 项目 我添加了 Spark 依赖项 但运行安装目标时 我
  • 如何为结构的可变引用中的字段交换新值?

    我有一个带有字段的结构 struct A field SomeType Given a mut A 我怎样才能移动的值field并交换一个新值 fn foo a mut A let mut my local var a field a fi
  • php 中 var-export 函数的反义词是什么?

    我通过 将变量导出到文本区域变量导出 schools true 这样用户就可以编辑它 然后我想用所做的更改来 更新 变量 更新是通过 POST 方法接收的 我有一些text我想要成为变量 我怎样才能做到这一点 我现在所做的是在 php 文件
  • 如何在 CultureInfo(c#) 中显示尼日利亚奈拉符号

    我想显示带有尼日利亚货币符号的金额 即 N 带有双删除线 我已经尝试过 ff 段代码 它只显示带有 N 的金额 而不是带有正确的符号 N 带有双删除线 IFormatProvider currencyFormat new System Gl
  • Outlook REST API - getFolders 不返回所有文件夹

    我刚刚开始使用 Outlook REST API 我的基准是使用node outlook的教程 第一个任务是检索我的邮件帐户中的所有文件夹 所以我发出这个 REST 请求 GET https outlook office com api v
  • UTF-8 和 os.listdir()

    我在处理包含 字符的文件时遇到了一些麻烦 即 xC8 x99采用 UTF 8 拉丁文小写字母 S 下面带逗号 我正在创建一个 txt文件并尝试将其恢复os listdir 很遗憾 os listdir 将其返回为s xCC xA6 s 下面
  • 何时使用 toString() 方法

    这听起来可能非常基本 有人可以解释一下toString 方法以及何时有效使用该方法 在谷歌上进行了搜索 但找不到任何好的资源 在大多数语言中 toString或者等效的方法只是保证一个对象可以用文本表示 这对于日志记录 调试或任何其他需要能
  • Android:FragmentTabHost - java.lang.IllegalArgumentException:您必须指定一种创建选项卡内容的方法

    我在课堂上有以下内容用于创建FragmentTabHost public class TabsActivity extends FragmentActivity private FragmentTabHost mTabHost Overri
  • 双向重复测量ANOVA python函数

    预先感谢您的任何答复 我想在 python 中进行 2 路重复测量方差分析 其中一个 IV 有 5 个级别 其他 4 个级别 有一个 DV 我尝试查看 scipy 文档和一些在线博客 但似乎找不到任何东西 您可以使用rm anovaPino
  • 我希望能够通过网络从 BIOS 提取错误日志

    我希望能够通过网络从 BIOS 提取错误日志 查看 MSDN 中的 Win32 BIOS 我没有看到任何定义错误日志的内容 很乐意在 C 中使用 WMI 来完成此操作 但我愿意接受建议 是否可以 Win32 BIOS 没有包含 BIOS 错
  • 为什么在 PHP 中使用 ORM?

    最近开始学习ORM 突然想到一个问题 PHP 应用程序主要使用 MySql 和 Sqlite 几乎所有 PHP 服务器都安装了它们 那么是否值得在 PHP 中使用 ORM 来独立于数据库呢 性能怎么样 数据库独立性并不是使用 ORM 的主要
  • Jquery 自动完成 - 无结果消息

    我希望自动完成在下拉列表中显示 无结果 如果没有找到结果 则列出 我的情况就像 JQuery 默认示例 function var availableTags ActionScript AppleScript Asp BASIC C C Cl
  • R Shiny:Vtree 图未使用 Shiny 渲染

    如何在闪亮中使用 vtree 包 尝试从服务器端渲染时 没有出现所需的绘图 我的代码 library shiny library vtree Define UI ui lt pageWithSidebar App title headerP
  • ColdFusion、MS Word 文档和希腊字符

    我正在尝试从数据库动态构建 Word 文档 我使用 CFC 进行查询处理 我的努力是成功的 但我只能复制英语文档 但是 我的应用程序使用希腊语 当我尝试构建包含希腊字符的文档时 输出如下所示 我尝试了很多事情但没有任何效果 这里奇怪的是 当
  • 以天:小时:分钟:秒格式计算 SQL 中的 DateDiff

    我目前正在使用 SQL 脚本来计算两个日期之间的差异 这将为我提供 DD HH MI SEC 格式的结果 例子 日期 1 2012 年 7 月 30 日 下午 4 00 日期 2 2012 年 5 月 4 日上午 10 31 结果应该是 8
  • 当 puppet-rspec 存在时,为什么我会收到“类不存在”?

    我设置了一个新的木偶demo模块具有以下内容Gemfile当我运行一个简单的 puppet rspec 测试时 它按预期工作 Gemfile source https rubygems org if puppetversion ENV PU