如何在 Chef 规范中存根两级 json 数据包
How to stub two level of json data bag in chef spec
我正在尝试为 chef 编写单元测试并按如下所示存根加密数据包。
食谱部分
variables(car_model: Chef::EncryptedDataBagItem.load('databagname', node.environment, key_name)['cardetails']['car_model'])
在下面的模式中做存根
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
"cardetails": {
'car_model' => 'abc'
}
)
获取未定义方法的错误
NoMethodError
nil:NilClass
的未定义方法“[]”
食谱跟踪:
我的数据包结构是
{
"id": "databagname",
"cardetails": {
"car_model": "ABC",
"car_engine": "XYZ",
"car_type": "DEE",
}
}
当我使用以下语法进行存根时问题得到解决
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
"cardetails" => {'car_model' => 'abcasasasasas'}
)
一般来说,如果可以的话,您不应该使用它 API。如果需要,正常的 data_bag_item
API 会自动解密,然后您可以在 ChefSpec 中使用正常的存根助手。
我正在尝试为 chef 编写单元测试并按如下所示存根加密数据包。 食谱部分
variables(car_model: Chef::EncryptedDataBagItem.load('databagname', node.environment, key_name)['cardetails']['car_model'])
在下面的模式中做存根
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
"cardetails": {
'car_model' => 'abc'
}
)
获取未定义方法的错误
NoMethodError
nil:NilClass
的未定义方法“[]”食谱跟踪:
我的数据包结构是
{
"id": "databagname",
"cardetails": {
"car_model": "ABC",
"car_engine": "XYZ",
"car_type": "DEE",
}
}
当我使用以下语法进行存根时问题得到解决
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
"cardetails" => {'car_model' => 'abcasasasasas'}
)
一般来说,如果可以的话,您不应该使用它 API。如果需要,正常的 data_bag_item
API 会自动解密,然后您可以在 ChefSpec 中使用正常的存根助手。