首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行具有数据库标签的chefspec测试

无法运行具有数据库标签的chefspec测试
EN

Stack Overflow用户
提问于 2017-06-16 21:48:17
回答 1查看 670关注 0票数 0

我正在尝试使用chefspec运行单元测试。我将数据库添加到我的食谱中。在没有数据库标签的情况下,chefspec测试运行良好。添加数据库标签后,chefspec显示以下错误:

代码语言:javascript
复制
 1) database::prerequisites installs a package
     Failure/Error: let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'oracle', version: '7.2').converge(described_recipe) }
 Net::HTTPServerException:
   404 "Not Found "
 # /tmp/chefspec20170616-8187-olziw2file_cache_path/cookbooks/database/recipes/prerequisites.rb:9:in `from_file'
 # ./prerequisites_spec.rb:4:in `block (2 levels) in <top (required)>'
 # ./prerequisites_spec.rb:25:in `block (2 levels) in <top (required)>'

我不知道如何在chefspec中处理数据库标签。当我在工作站中使用chef-client执行recipe时,它工作正常。但是chefspec测试失败了。

配方规格文件:

代码语言:javascript
复制
require 'chefspec'

describe 'database::prerequisites' do
  let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'oracle', version: '7.2').converge(described_recipe) }



    before(:each) do
      stub_command("cat /etc/oracle-release | grep 7.*").and_return(true)
    end

    before(:each) do
      stub_command("cat /etc/oracle-release | grep 6.*").and_return(true)
    end

     before(:each) do
      stub_command("cat /etc/selinux/config | grep SELINUX=disabled").and_return(true)
    end

    before(:each) do
      stub_command("sestatus | grep enabled").and_return(true)
    end

  it 'installs a package ' do
    expect(chef_run).to install_package('oracle-rdbms-server-12cR1-preinstall')
    expect(chef_run).to install_package('net-tools')
    expect(chef_run).to install_package('xorg-x11-apps')

  end

   it 'creates a directory with the default action' do
    expect(chef_run).to create_directory('/u01/app/oraInventory')
    expect(chef_run).to create_directory('/oradata')
  end  

end

配方文件:

代码语言:javascript
复制
my_secret_key = Chef::EncryptedDataBagItem.load_secret("/etc/secret_key")
passwords = Chef::EncryptedDataBagItem.load("databags", "databag_passwords", my_secret_key)

你能建议一下如何解决这个问题吗?我只在我的厨师工作站上运行测试。

EN

回答 1

Stack Overflow用户

发布于 2017-06-17 15:16:18

您需要在测试服务器中创建数据包,https://github.com/chefspec/chefspec#dsl展示了如何使用ServerRunner完成此任务,您也可以使用rspec-mocks模拟load_secretload方法。我更喜欢后者,因为它更快(就测试运行时间而言)和更多的unit-y,但这取决于您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44590936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档