您正在使用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) 我正在尝试运行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) 我有一个依赖于apache2 cookbook 的配方,除其他外,使用定义启用模块:
apache_module 'passenger'
Run Code Online (Sandbox Code Playgroud)
有没有办法用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)