标签: chefspec

在chefspec中打开存根文件

您正在使用chefspec进行测试,我发现以下错误.

/cookbook/wordpress/recipes/default.rb

wp_secrets = Chef::Config[:file_cache_path] + '/wp-secrets.php'

if File.exist?(wp_secrets)
  salt_data = File.read(wp_secrets)
else
  require 'open-uri'
  salt_data = open('https://api.wordpress.org/secret-key/1.1/salt/').read
  open(wp_secrets, 'wb') do |file|
    file << salt_data
  end
end
Run Code Online (Sandbox Code Playgroud)

当我运行ChefSpec时,我得到:

1) wordpress::default on Centos 6.5 includes depends recipes
   Failure/Error: end.converge('wordpress::default')
   Errno::ENOENT:
     No such file or directory @ rb_sysopen - /var/chef/cache/wp-secrets.php

   # /tmp/d20140617-408-1rx47um/cookbooks/wordpress/recipes/default.rb:77:in `from_file'
   # ./spec/centos/default_spec.rb:10:in `block (2 levels) in <top (required)>'
   # ./spec/centos/default_spec.rb:20:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

当我添加一个存根 default_spec.rb

before do
  File.stub(:exist?)
    .with("#{Chef::Config[:file_cache_path]}/wp-secrets.php")
    .and_return(true)
end
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

1) wordpress::default on …
Run Code Online (Sandbox Code Playgroud)

rspec chef-infra chefspec

4
推荐指数
1
解决办法
3038
查看次数

ChefSpec测试中出现"Cookbook not found"错误

我正在尝试运行ChefSpec测试.

这是我的ChefSpec测试:

require_relative '../spec_helper'

describe 'my-demo::basesystem' do

  let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe)}

  describe 'basesystem' do

    it "should be installed" do
      expect(chef_run).to install_package('build-essential')
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的秘诀

include_recipe 'build-essential::default'
Run Code Online (Sandbox Code Playgroud)

这是我执行ChefSpec测试时的错误输出

================================================================================
Recipe Compile Error in /tmp/d20140208-11211-1tu0tmq/my-demo/recipes/basesystem.rb
================================================================================

Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook build-essential:: not found. If you're loading build-essential:: from another cookbook, make sure you configure the dependency in your metadata

Cookbook Trace:
---------------
  /tmp/d20140208-11211-1tu0tmq/build-essential/recipes/default.rb:21:in `from_file'
  /tmp/d20140208-11211-1tu0tmq/my-demo/recipes/basesystem.rb:2:in `from_file'

Relevant File Content:
----------------------
/tmp/d20140208-11211-1tu0tmq/build-essential/recipes/default.rb:

 14:  # distributed under the License is distributed on an "AS IS" …
Run Code Online (Sandbox Code Playgroud)

rspec berkshelf chefspec

3
推荐指数
1
解决办法
1971
查看次数

使用chefspec测试厨师定义的调用是否有意义?

我有一个依赖于apache2 cookbook 的配方,除其他外,使用定义启用模块:

apache_module 'passenger'
Run Code Online (Sandbox Code Playgroud)

有没有办法用chefspec测试这个电话?

根据" 厨师图书馆或定义? ",定义只是几个资源的分组.

我应该为定义添加的每个资源添加期望吗?
或者是测试第三方代码?

chef-infra chefspec

1
推荐指数
1
解决办法
421
查看次数

ChefSpec运行速度超慢

我正在遵循这个基本教程,似乎这些测试应该在最多2秒内运行,但是我在5次测试中得到41秒.

我用ChefSpec运行--profile,这就是结果

Top 8 slowest examples (41.17 seconds, 99.8% of total time):
  webserver_test::default When run on CentOS 7.2.1511 installs httpd
5.21 seconds ./spec/unit/recipes/default_spec.rb:20
  webserver_test::default When run on Ubuntu 14.04 converges successfully
5.17 seconds ./spec/unit/recipes/default_spec.rb:39
  webserver_test::default When run on CentOS 7.2.1511 enables the httpd service
5.16 seconds ./spec/unit/recipes/default_spec.rb:24
  webserver_test::default When run on Ubuntu 14.04 starts the apache2 service
5.15 seconds ./spec/unit/recipes/default_spec.rb:51
  webserver_test::default When run on CentOS 7.2.1511 converges successfully
5.15 seconds ./spec/unit/recipes/default_spec.rb:16
  webserver_test::default When run …
Run Code Online (Sandbox Code Playgroud)

ruby chef-infra chefspec

1
推荐指数
1
解决办法
356
查看次数

标签 统计

chefspec ×4

chef-infra ×3

rspec ×2

berkshelf ×1

ruby ×1