首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChefSpec和Ark资源测试

ChefSpec和Ark资源测试
EN

Stack Overflow用户
提问于 2014-06-11 22:50:32
回答 1查看 884关注 0票数 1

我开始用chefspec进行测试,我认为这是一个非常简单和可靠的测试框架。但我有一些关于资源测试的问题。我有这个default_spec.rb

代码语言:javascript
复制
require 'chefspec'
require_relative 'spec_helper'

describe 'df-maven::default' do
  let (:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
  it 'should run ark' do
    expect(chef_run).to put_ark #'described_'
  end
end

这是我想要的菜谱df-maven::default的测试

代码语言:javascript
复制
include_recipe 'java::default'
include_recipe 'ark::default'

mvn_version = node['df-maven']['version'].to_s

ark 'maven' do
  url      node['df-maven'][mvn_version]['url']
  checksum node['df-maven'][mvn_version]['checksum']
  path     node['df-maven']['m2_home']
  version  node['df-maven'][mvn_version]['version']
  has_binaries ['bin/mvn']
  append_env_path true
  action :put
end

但是,当我运行测试时,我会得到一个错误undefined local variable or method 'put_ark'

然后,我将其添加到我的spec_helper中(我认为matchers应该能做到这一点):

代码语言:javascript
复制
require 'chefspec'

module ChefSpec
  module Matchers
    RSpec::Matchers.define :put_ark do |package_name|
      match do |chef_run|
        chef_run.resources.any? do |resource|
          resource_type(resource) == 'ark' and resource.name == package_name
        end
      end
    end
  end
end

但是我得到了一个undefined method resources' for #<ChefSpec::Runner:0x40a2650>错误

在实际的实践中,它完成了它需要做的事情,但是我被要求开始为我的所有食谱做测试,所以我决定从我的df食谱开始。

无论如何,我认为我必须定义匹配,但我不知道如何做到这一点,并使我的测试通过。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-12 01:15:58

正如ChefSpec自述中所记录的那样,libraries/matchers.rb (用于自动加载):

代码语言:javascript
复制
if defined?(ChefSpec)
  def put_ark(resource_name)
    ChefSpec::Matchers::ResourceMatcher.new(:ark, :put, resource_name)
  end
end

如果您不想分发这个匹配器,可以将它放在spec/support/something.rb

代码语言:javascript
复制
def put_ark(resource_name)
  ChefSpec::Matchers::ResourceMatcher.new(:ark, :put, resource_name)
end

然后在您的spec_helper.rb中要求“spec/support/什么”。

这将使put_ark资源匹配器/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24173885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档