2016-12-28 8 views
1

Я пытаюсь написать базовую проверку изображения докеры Ubuntu 16.04. Моя тестовая среда - Ubuntu 16.04, и я установил пакет ruby-serverspec.Тест Dockerfile требует директивы, неспособной найти правильный модуль

require "serverspec" 
require "docker_image" 

describe "Dockerfile" do 
    before(:all) do 
    image = Docker::Image.build_from_dir('..') 

    set :os, family: :debian 
    set :backend, :docker 
    set :docker_image, image.id 
    end 

    it "installs the right version of Ubuntu" do 
    expect(os_version).to include("Ubuntu 14") 
    end 

    def os_version 
    command("lsb_release -a").stdout 
    end 
end 

Это сознательно неудачу тест на данный момент, так как он проверяет Ubuntu 14, но она даже не доходя до сбоя.

$ rspec /test/spec/localhost/my_spec.rb  
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- docker_image (LoadError) 
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /test/spec/localhost/my_spec.rb:4:in `<top (required)>' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1361:in `load' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1361:in `block in load_spec_files' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1359:in `each' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/configuration.rb:1359:in `load_spec_files' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:106:in `setup' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:92:in `run' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:78:in `run' 
    from /usr/lib/ruby/vendor_ruby/rspec/core/runner.rb:45:in `invoke' 
    from /usr/bin/rspec:4:in `<main>' 

Я не знаю, как правильно требовать модуль Docker::Image класса. Путь поиска по-прежнему является черным искусством для меня. Как я могу заставить этот тест потерпеть неудачу, как ожидалось?

+0

В этом коде вы вообще не используете serverpec. Вероятно, вы должны удалить его. Однако вы используете specinfra для бэкэнда докеров. –

ответ

1

Я не уверен, что это правильный подход, Serverspec должен только проверять вашу среду, которая должна быть сконфигурирована с помощью какого-либо управления конфигурацией (Chef, Puppet и т. Д.).

Однако похоже, что вы ввели неправильный драгоценный камень/файл. Вы должны заменить вторую строку на require "docker-api". Docker::Image - это класс от docker-api gem. Перед запуском тестов необходимо установить Gem.

 Смежные вопросы

  • Нет связанных вопросов^_^