如何在ServerSpec测试之前设置测试前提条件?

时间:2015-03-17 14:34:41

标签: chef test-kitchen serverspec

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

  1. 用测试厨房收集盒子
  2. 使用带有测试厨房的ServerSpec(或可能是Bats)
    1. 通过在代理配置为转发到的端口上的框列表上启动python SimpleHTTPServer来设置测试,并在index.html文件中创建它以供服务。
    2. 断言当我点击https://localhost时,我得到SimpleHTTPServer正在服务的文件。
    3. 断言关于代理的更多内容(所有这些都要求后面有服务。)
  3. 拆卸。没有真正需要撕下任何东西,只需让测试厨房摧毁盒子。
  4. 所以我的问题是,使用test-kitchen和ServerSpec和/或bats设置这些测试前置条件的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

老问题,但为了完整性:
您可以在服务器规范中使用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-typeshttp_get类型可能会提供来自serverspec内的HTTP服务器测试所需的内容。