Запустить вложенные кулинарные книги?|Chefspec - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь запустить chefspec тесты для поваренной книги Nginx, и она находится в том же каталоге, что и другие, например bar.Для моих тестов InSpec запустите kitchen test в ../../Nginx, в котором есть мой .kitchen.yml файл.

Причина, по которой я упоминаю поваренную книгу bar, заключается в том, что она является первой в списке выполнения в моем .kitchen.yml.Я запускаю bar, а затем он также вызывает несколько других, так как Nginx находится дальше в кулинарной книге.

Надеюсь, что это имело какой-то смысл.

Вот моя ошибкасообщение в терминале

[2018-05-15T12:45:57-04:00] WARN: Port 8889 not available

nginx::default
  Nginx
    Converges successfully (FAILED - 1)

Failures:

  1) nginx::default Nginx 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/chefspec20180515-32598-1um8wa6file_cache_path/cookbooks/nginx/recipes/_configure.rb:23:in `from_file'
         # /var/folders/pj/c4gpnwws6n7gb7x_plpv9hzc0000gp/T/chefspec20180515-32598-1um8wa6file_cache_path/cookbooks/nginx/recipes/default.rb:324:in `from_file'
         # ./spec/unit/recipes/default_spec.rb:10:in `block (3 levels) in <top (required)>'
         # ./spec/unit/recipes/default_spec.rb:13:in `block (4 levels) in <top (required)>'
         # ./spec/unit/recipes/default_spec.rb:13:in `block (3 levels) in <top (required)>'
     # ./spec/unit/recipes/default_spec.rb:13:in `block (3 levels) in <top (required)>'

Finished in 4.08 seconds (files took 1.98 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/unit/recipes/default_spec.rb:12 # nginx::default Nginx Converges successfully

Моя команда, которую я использую

Josh:nginx josh$ chef exec rspec spec/unit/recipes/default_spec.rb --format d

Мой тестовый файл

Супер базовый, пока он не запустится, тогда я могу использовать свой полный список тестов.

require 'chefspec'

describe 'nginx::default' do
  context 'Nginx' do
    let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '16.04').converge(described_recipe) }

    it 'Converges successfully' do
      expect { chef_run }.to_not raise_error
    end


  end #end context Nginx
end # end describe nginx::default

1 Ответ

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

Я предлагаю вам переписать свой пост, чтобы фактически добавить вопрос ... Я не смог найти ни одного, поэтому я не уверен, о чем вы спрашиваете :) Поэтому я отвечу на две наиболее вероятные вещи, которые вы могли быспрашивая:

1) Как запустить все тесты внутри определенной кулинарной книги?

Это довольно просто, вам просто нужно немного изменить команду rspec, например:

rspec ./spec/

Вы, конечно, можете указать другую папку.Я считаю, что по умолчанию rspec будет запускать любые файлы, найденные в этой папке, которые заканчиваются на _spec.rb (также вложенные папки).

2) Что вызывает это <NoMethodError: undefined method '[]' for nil:NilClass>?

Это ошибка Ruby, которую вы получите, если попытаетесь где-то использовать переменную, но эта переменная не была установлена.Проверьте свой рецепт / тест и убедитесь, что у вас нет атрибута chef, который используется где-либо без его установки.Трассировка ошибки может помочь выяснить, где это.

Надеюсь, это поможет!

...