- Использование кукол 3
- Тестирование с помощью RSpec-марионетку
- Итерация над массивом хэшей с использованием определенного типа
- Получение ошибки, говоря мне, что мой параметр (который по умолчанию до значения $ заголовка) не могут быть доступны, как я, потому что это не является массивом или Hash
Я использую старый стиль итерации в кукольном модуль, создавая определенный тип перебрать массив хешей. Я пытаюсь написать тест для этого определения в rspec-puppet, пытаясь назначить хэш для :title
, используя let()
. Предполагается, что значение $title
будет установлено на мою переменную под названием $daemon
, но мои тесты продолжают метать ошибки, говоря, что $daemon
не является хешем или массивом.Rspec Кукольный: Defined Type итерация
Вот как я создаю мой определенный тип:
define my_module::daemon_install ($daemon = $title) {
package {"${daemon['package_name']}":
ensure => "${daemon['package_version']}",
}
file {"${some_fact}/${daemon['binary']}.conf":
ensure => file,
content => "blah"
notify => Service["${daemon['name']}"],
}
service {"${daemon['name']}":
ensure => running,
enable => true,
}
}
И вот как я пытаюсь установить заголовок:
describe 'my_module::daemon_install' do
context 'with foo' do
let(:title) {
{
"name" => "foo",
"package_name" => "bar",
"package_version" => "1.0.1",
"binary" => "food",
}
}
# ...
end
end
А вот ошибка:
daemon is not a hash or array when accessing it with package_version
Я на самом деле не умею использовать определенные типы для итерации, и очень новый t rspec-puppet, так что я не уверен, что я пропустил что-то очевидное здесь или нет.
Зачем стоит опасаться package_version
, а не package_name
? И что еще более важно: почему это не хэш, когда (я полагаю) я правильно устанавливаю его в хэш в файле spec.
Следует отметить, что еще один тест класса, который использует этот определенный тип, завершается успешно. Поэтому, похоже, это связано с тем, как я пытаюсь установить заголовок при прямом тестировании определения, если бы я угадал.