如何在厨师规范中存根两级json数据包

时间:2017-06-01 11:09:43

标签: chef chefspec

我正在尝试为厨师编写单元测试并将加密数据包存根,如下所示。 食谱部分

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

未定义的方法`[]'为零:NilClass

食谱追踪:

我的数据包结构是

{ "id": "databagname", "cardetails": { "car_model": "ABC", "car_engine": "XYZ", "car_type": "DEE", } }

2 个答案:

答案 0 :(得分:0)

当我使用以下语法进行存根

时,它已得到解决
Chef::EncryptedDataBagItem.stub(:load).with('databagname', 'test', 'somekey').and_return(
  "cardetails" => {'car_model' => 'abcasasasasas'}
  )

答案 1 :(得分:0)

一般情况下,如果您可以提供帮助,则不应该使用该API。正常的data_bag_item API会在需要时自动解密,然后您可以在ChefSpec中使用正常的存根帮助程序。