【发布时间】:2023-06-11 12:21:01
【问题描述】:
我正在尝试为我的食谱编写chefspec/单元测试。我面临问题。我需要为下面的代码编写单元测试用例。如果我注释了代码的最后一条语句,则测试会成功执行,但我也必须捕获该语句,因为它是正确的编写方式。感谢您的帮助。
powershell_script 'Delete ISO from temp directory' do
code <<-EOH
[System.IO.File]::Delete("#{iso_path}")
[System.IO.File]::Delete("#{config_path}")
EOH
guard_interpreter :powershell_script
only_if { File.exists?(iso_path)}
end
【问题讨论】:
-
据我了解,您正试图删除一些文件。 Chef 有
file资源,您不需要 powershell。 -
@DracoAter 我只想从临时目录中删除 ISO,前提是它存在。我已使用 powershell 资源对该块进行单元测试,它工作正常,但我也必须抓住条件才能正确编写单元测试
-
这正是
file资源所做的。如果文件存在,它将删除文件。您应该始终更喜欢现有的幂等资源(如文件、目录、模板)而不是非幂等资源(如执行、bash、powershell_script)。
标签: unit-testing chef-infra chef-recipe cookbook chefspec