如何在服务器规范测试之前设置测试前提条件



我正在编写一本简单的食谱,用于将SSL代理部署到服务器上。 该说明书最终将被其他部署 Web 服务的说明书使用,以便在它们前面设置 SSL 代理,但为了测试代理说明书本身,它背后没有这样的服务。 我对这本说明书的基本测试策略如下:

  1. 盒子与测试厨房融合
  2. 在一起
  3. 使用ServerSpec(或可能的Bats)和测试厨房
    1. 通过在代理配置为转发到的端口上的框列表上启动python SimpleHTTPServer来设置测试,并在index.html文件中创建供其服务。
    2. 断言当我点击 https://localhost 时,我得到了SimpleHTTPServer正在提供的文件。
    3. 言有关代理的更多内容(所有这些都要求其背后有一个服务。
  4. 拆卸。 不需要拆掉任何东西,只要让测试厨房摧毁盒子。

所以我的问题是,使用test-kitchen和ServerSpec和/或bats设置这些测试前提条件的正确方法是什么?

如果设置和拆卸真的不是我正在测试的一部分,那么我通常只是在每次测试之前运行的 Ruby 中(通常在 spec_helper.rb 中)进行。由于 serverspec 只是在测试厨房实例上逐行运行 ruby 代码,因此我觉得没有必要在 serverspec 中提供设置/拆卸功能(换句话说,没有需要调用设置或拆卸方法的排序问题或重复测试)。

老问题,但为了完整起见:
您可以在服务器规范中使用 rspec 的before

describe file('/tmp/testfile') do
  before do
    File.write('/tmp/testfile', 'Hello, world')
  end
  it { should exist }
  its(:content) { should include('Hello') }
end

来自 https://github.com/jantman/serverspec-extended-types 的http_get类型可以提供从服务器规范中进行HTTP服务器测试所需的内容。

最新更新