Я пытаюсь запустить тест chef-spec, который проверяет, правильно ли работает поваренная книга nginx
.Это был простой тест для начала.Ну, это не сработает.Я могу заставить свою команду указать на него и запустить тест, но он не пройдет производство !!!Поваренная книга, которая была развернута в течение нескольких месяцев и работает просто отлично, и она отлично сходится, когда я выполняю kitchen test server
, который запускает кучу поваренных книг в списке запуска.что-то под названием init_setup
, которое содержит массу вещей, и одна из них - nginx
поваренная книга.Я подумал, что смогу проверить это как отдельную кулинарную книгу без других.Я не прав или здесь есть способ запустить тесты chefspec, такие как kitchen verify server
Тест
#
# Cookbook:: nginx
# Spec:: default
#
# Copyright:: 2018, The Authors, All Rights Reserved.
require 'spec_helper'
describe 'nginx::default' do
context 'When all attributes are default, on Ubuntu 16.04' do
let(:chef_run) do
# for a complete list of available platforms and versions see:
# https://github.com/customink/fauxhai/blob/master/PLATFORMS.md
runner = ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '16.04')
runner.converge(described_recipe)
end
it 'converges successfully' do
expect { chef_run }.to_not raise_error
end
end
end
Ошибка
F
Failures:
1) nginx::default When all attributes are default, on Ubuntu 16.04 converges successfully
Failure/Error: expect { chef_run }.to_not raise_error
expected no Exception, got #<NameError: uninitialized constant ChefSpec> with backtrace:
# ./cookbooks/nginx/spec/unit/recipes/default_spec.rb:15:in `block (3 levels) in <top (required)>'
# ./cookbooks/nginx/spec/unit/recipes/default_spec.rb:20:in `block (4 levels) in <top (required)>'
# ./cookbooks/nginx/spec/unit/recipes/default_spec.rb:20:in `block (3 levels) in <top (required)>'
# ./cookbooks/nginx/spec/unit/recipes/default_spec.rb:20:in `block (3 levels) in <top (required)>'
Finished in 0.0273 seconds (files took 0.37841 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./cookbooks/nginx/spec/unit/recipes/default_spec.rb:19 # nginx::default When all attributes are default, on Ubuntu 16.04 converges successfully
спецификация помощника
# frozen_string_literal: true
require 'chefspec'
require 'chefspec/berkshelf'
Ошибка в каталоге nginx
CPName-Username:nginx josh.kirby$ chef exec rspec
spec/unit/recipes/default_spec.rb
[2018-05-14T13:37:07-04:00] WARN: Port 8889 not available
F
Failures:
1) nginx::default When all attributes are default, on Ubuntu 16.04 converges successfully
Failure/Error: expect { chef_run }.to_not raise_error
expected no Exception, got #<NoMethodError: undefined method `[]' for nil:NilClass> with backtrace:
# /var/folders/pj/c4gpnwws6n7gb7x_plpv9hzc0000gp/T/chefspec20180514-23893-d5kb58file_cache_path/cookbooks/nginx/recipes/_configure.rb:23:in `from_file'
# /var/folders/pj/c4gpnwws6n7gb7x_plpv9hzc0000gp/T/chefspec20180514-23893-d5kb58file_cache_path/cookbooks/nginx/recipes/default.rb:324:in `from_file'
# ./spec/unit/recipes/default_spec.rb:16:in `block (3 levels) in <top (required)>'
# ./spec/unit/recipes/default_spec.rb:20:in `block (4 levels) in <top (required)>'
# ./spec/unit/recipes/default_spec.rb:20:in `block (3 levels) in <top (required)>'
# ./spec/unit/recipes/default_spec.rb:20:in `block (3 levels) in <top (required)>'
Finished in 4.16 seconds (files took 1.93 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/unit/recipes/default_spec.rb:19 # nginx::default When all attributes are default, on Ubuntu 16.04 converges successfully