環境:
レンダリング時にファクトのcount
サブコンポーネントに対処するパペット テンプレートがあります。processors
その事実は私のすべてのクライアントに存在します。
ファクトの使用例は、10 進数の計算を実行するテンプレート行にあります。たとえばMyConfigVar=<%= 0.9 * @processors['count'] %>
、一部の.erb
ファイルです。
したい:
- テンプレート化されたコードを本番ホストにデプロイします。
- テンプレート用の堅牢な単体テストを作成して、事実のさまざまな妥当な値が与えられた場合に適切にレンダリングされることを確認できるようにします。
私が試したこと:
最初に、私は sigils: で試しました<%= 0.9 * @processors[:count] %>
。rspec-puppet で のようなものをモックした場合facts = { :processors => { :count => 10 } }
、テストはすべてパスしました。マニフェスト アプリケーションが機能しませんでした。「乗算できませんnil
」というエラーがありました。シジルは明らかにアウトです。
次に、文字列のキーを試しました: <%= 0.9 * @processors['count'] %>
. シジル ( ) を使用したテストはfacts = { :processors => { :count => 10 } }
検出されませんでしたが、値が適切に検出され、 が乗算されましたfacts = { :processors => { 'count' => 10 } }
。その後、すべてのテストに合格しました。ただし、マニフェストの適用は失敗で失敗しましたCan't coerce String into Int
。
次に、文字列の値を試しました。テンプレートはまだ読み取ら<%= 0.9 * @processors['count'].to_i %>
れており、文字列と整数値の両方をテストしました。
let(:facts) { :processors => { 'count' => '10' } }
# tests with string value
let(:facts) { :processors => { 'count' => 10 } }
# tests with integer value
0.0
テストはすべて合格しましたが、マニフェスト アプリケーションは事実の価値のためにレンダリングされました。
質問:
2 つの主な質問:
- この (または任意の) 事実を確実に処理するインライン 10 進数を取得するにはどうすればよいですか?
rspec-puppet
実稼働を代表する型を使用して、値を実際に使用して、または同様にモックすることで、確実に単体テストを行うにはどうすればよいですか?