Rspec 使用shell_out进行Chef库测试
我正在为Chef编写自定义资源。该资源用于设置sysctl值。我基本上使用的是Chef sysctl代码,并对其进行了一些限制。我们不信任公司的所有用户:P 我试图将大部分代码放在库帮助器模块中,以便更轻松地测试代码。我不确定这是否是最佳做法。如果这是不好的做法,请告诉我 无论如何,我遇到的问题是尝试测试我的库代码。每当我试图模拟shell_out命令时,总会出现以下错误Rspec 使用shell_out进行Chef库测试,rspec,chef-infra,chefspec,Rspec,Chef Infra,Chefspec,我正在为Chef编写自定义资源。该资源用于设置sysctl值。我基本上使用的是Chef sysctl代码,并对其进行了一些限制。我们不信任公司的所有用户:P 我试图将大部分代码放在库帮助器模块中,以便更轻松地测试代码。我不确定这是否是最佳做法。如果这是不好的做法,请告诉我 无论如何,我遇到的问题是尝试测试我的库代码。每当我试图模拟shell_out命令时,总会出现以下错误 1) Sysctl::Helpers.set_sysctl_param Failure/Error: subjec
1) Sysctl::Helpers.set_sysctl_param
Failure/Error: subject.set_sysctl_param("key1", "value1")
NoMethodError:
undefined method `shell_out!' for Sysctl::Helpers:Module
库代码
module Sysctl
module Helpers
include Chef::Mixin::ShellOut
def self.set_sysctl_param(key, value)
shell_out!("sysctl -w \"#{key}=#{value}\"")
end
end
end
试验
我感谢你能给我的任何帮助或建议
谢谢 包含模块时,将模块方法添加为实例方法。但是您尝试在类方法中访问shell\u out
。实际上,您需要使用Chef::Mixin::ShellOut扩展模块。这样,ShellOut方法将作为类方法添加
module Sysctl
module Helpers
extend Chef::Mixin::ShellOut # replace include with extend
def self.set_sysctl_param(key, value)
shell_out!("sysctl -w \"#{key}=#{value}\"")
end
end
end
更多信息谢谢!这非常有用。
module Sysctl
module Helpers
extend Chef::Mixin::ShellOut # replace include with extend
def self.set_sysctl_param(key, value)
shell_out!("sysctl -w \"#{key}=#{value}\"")
end
end
end