0

所以我正在尝试创建一个可重用的自定义资源库。视频解释了如何做到这一点,但它没有解决单独测试资源的问题。

我知道您可以通过配方和收敛来测试资源,但我不想编写新配方只是为了测试我的资源。

我希望有某种方法可以执行具有属性的自定义资源,而无需执行以下操作:

let(:chef_run) do
    runner = ChefSpec::ServerRunner.new
    runner.converge(described_recipe)
end 

如果你能说类似说的话

filename = 'myFile'    

it 'my resource should write to file' do
  execute_resouce(:some_resouce).with(filename)
  expect(::File).to receive(:write).with(filename)
end

那真的很酷。

4

1 回答 1

1

不幸的是,这是相当困难的。我有一个适合我的解决方案,但尚未完全清理以供公众使用。您可以在https://github.com/poise/poise-spec看到正在进行的清理工作,也许可以从我的风格中汲取一些想法(例如https://github.com/poise/poise-service/blob/ master/test/spec/resources/poise_service_user_spec.rb)。总体而言,目前最简单的方法就是在下面test/cookbook/或类似的目录下制作一个测试夹具食谱,并在其中放入一堆小食谱,您可以告诉 ChefSpec 运行。

于 2016-09-29T23:16:31.027 回答