- 使用木偶3
- 測試使用RSpec的木偶
- 遍歷散列的數組使用定義類型
- 得到一個錯誤,告訴我,我的參數(默認到$ title的值)不能以我的方式訪問,因爲它不是Array或Hash
我在puppet模塊中使用舊式迭代,創建一個定義的類型以遍歷數組的哈希。我試圖在rspec-puppet中爲這個定義編寫一個測試,試圖使用let()
將散列分配給:title
。然後$title
應該被設置爲我的變量$daemon
,但我的測試不斷拋出錯誤說$daemon
不是一個散列或數組。Rspec的木偶:定義類型迭代
下面是我如何創建我的定義類型:
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
?更重要的是:爲什麼它不是一個散列,當(我相信)我在規格文件中正確設置它爲散列。
我應該提一下,使用此定義類型的類的另一個測試可以成功完成。所以它似乎與我直接測試定義時如何設置標題有關,如果我猜測。