Я нахожусь в процессе написания тестов ServerSpec для кулинарной книги, которую я написал. Тестам нужны атрибуты узла, чтобы утверждать различные вещи через кухню.
К счастью, здесь есть руководство, объясняющее, как этого добиться: http://jakshi.com/blog/2014/05/12/accessing-chef-attributes-in-serverspec-tests/
У меня проблема в том, что это не работает:
attrs = attrs.deep_merge(node.override_attrs) unless node.override_attrs.empty?
Но это работает:
attrs = attrs.deep_merge(node.attributes.combined_override) unless node.attributes.combined_override.empty?
Моя настройка точно такая же, как описано в блоге. Просмотр кода не помог из-за отсутствия ruby- фу. Версия клиента шеф-повара — 11.14.6, а версия Test-Kitchen — 1.3.1.
Может кто-нибудь помочь, пожалуйста? У кого-нибудь еще возникла такая проблема? Спасибо.
Обновление: вот все атрибуты из фиктивной поваренной книги, которую я создал для имитации этого.
cb-under-test/recipes/default.rb
<Nothing>
cb-under-test/test/fixtures/cookbooks/fake/attributes/default.rb
force_override['important_dir'] = 'test_recipe_force_override'
../env/dummy-env.json
{
"name": "dummy-env",
"description": "Dummy Env",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"override_attributes": {
"important_dir": "env_override"
}
}
node.override
и env вnode.env_override
,node.combined_override
дает вам результирующие атрибуты после глубокого слияния. Сообщение в блоге довольно старое, вам лучше использоватьattrs = node.merged_attributes
для записи файла json. - person Tensibai   schedule 20.10.2015