所以我试图创建一个可重用的自定义资源库。 This视频解释了如何做到这一点,但它没有解决单独测试资源的问题。
我知道你可以通过配方和融合测试资源,但我不想编写新的配方来测试我的资源。
我希望有一些方法可以使用属性执行自定义资源,而无需执行以下操作:
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
真的很酷。
答案 0 :(得分: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运行的小食谱。