- パペット 3 の使用
- rspec-puppet を使用したテスト
- 定義済みの型を使用してハッシュの配列を反復処理する
- 配列またはハッシュではないため、パラメーター (デフォルトで $title の値) にアクセスできないというエラーが表示される
puppet モジュールで古いスタイルの繰り返しを使用して、ハッシュの配列を繰り返し処理する定義済みの型を作成しています。rspec-puppet でこの定義のテストを書き、 using にハッシュを割り当てようとし:title
ていlet()
ます。は、という$title
変数に設定されるはずですが$daemon
、テストでは、それ$daemon
がハッシュでも配列でもないというエラーがスローされ続けます。
定義済みの型を作成する方法は次のとおりです。
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
私は実際には反復のために定義された型を使用することに少し慣れていません。
しかし、なぜそれは不平を言っているだけなpackage_version
のpackage_name
ですか?さらに重要なことは、スペックファイルで正しくハッシュに設定しているのに(私は信じている)、なぜハッシュではないのかということです。
この定義された型を使用するクラスの別のテストが正常に完了することを言及する必要があります。したがって、推測すると、定義を直接テストするときにタイトルを設定しようとしている方法に関連しているようです。