如何检查厨师食谱中是否分配了 windows_path?

How to check if windows_path was being assigned in chef recipe?

我刚开始使用 ChefSpec,正在研究它到底允许什么

我有一份安装 Sublime 的厨师食谱,并将 sublime 添加到 windows 上的路径变量:

chocolatey_package 'sublimetext3' do 
    action :upgrade 
end

windows_path node['sublime']['installation_path'] do 
    action :add 
    only_if { node['platform_family'] == 'windows' } 
end

有没有可能测试这样的东西?

例如:

it 'adds sublime to the machines path variable' do 
    expect(chef_run).to set_windows_path('pathtocheck')
end

我似乎找不到任何关于此的文档,或者 ChefSpec 允许您检查的确切内容。

谢谢

所以所有资源都遵循与匹配器相同的模式,$action_$resourcetype('$resourcename')。所以在这种情况下它将是:

expect(chef_run).to add_windows_path('pathtocheck')

确保您将 platformversion 选项设置为 ChefSpec,以便您使用 Windows Fauxhai 转储,否则您的 only_if 不会触发。 (在大多数情况下,您可以使用随机提示 platform_family?('windows') 来节省一些输入)