Супер базовый тест chefspec не удался на рабочей поваренной книге, которая, как известно, работает - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь запустить тест 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

1 Ответ

0 голосов
/ 14 мая 2018

Решено в комментариях, изначально находилось в неправильной папке, а затем было правильным сбоем в том, что обязательные атрибуты отсутствуют.

...