Chef infra 如何在chef规范中存根两级json数据包
我正试图为chef编写单元测试,并将加密数据包存根如下。 配方部分Chef infra 如何在chef规范中存根两级json数据包,chef-infra,chefspec,Chef Infra,Chefspec,我正试图为chef编写单元测试,并将加密数据包存根如下。 配方部分 variables(car_model: Chef::EncryptedDataBagItem.load('databagname', node.environment, key_name)['cardetails']['car_model']) 在下面的模式中做存根 Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').an
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'
}
)
将错误获取为未定义的方法
命名者
nil:NilClass的未定义方法“[]”
食谱跟踪:
我的数据包结构是
{
“id”:“databagname”,
“卡片细节”:{
“汽车型号”:“ABC”,
“汽车发动机”:“XYZ”,
“车辆类型”:“DEE”,
}
}
当我使用下面的语法进行存根时,它得到了解决
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
"cardetails" => {'car_model' => 'abcasasasasas'}
)
一般来说,如果可以的话,您不应该使用该API。如果需要,普通的
data\u bag\u项目API会自动解密,然后您可以使用ChefSpec中的普通存根帮助程序