コンテキスト:ファクトを10進数乗算するパペットテンプレートをテストするためにファクトをモックできますか?
私はそれがレンダリングされるprocessors
実際のcount
サブコンポーネントを扱う人形テンプレートを持っています。その事実は私のすべてのクライアントに存在します。
事実のユースケースは、小数点演算を行うテンプレート行にあります。たとえば、.erb
ファイルの場合はMyConfigVar=<%= 0.9 * @processors['count'] %>
です。
私がしたい:
- 私のテンプレートのコードは、生産宿主に配備取得します。
- 私のテンプレートのための堅牢な単体テストを書くので、事実のためのさまざまな妥当な値が与えられれば、正しくレンダリングされることを確信できます。
は、私が試したもの:
まず、私はシギルを試してみました:<%= 0.9 * @processors[:count] %>
。私がrspec-puppetで、facts = { :processors => { :count => 10 } }
のようなものを嘲笑したら、私のテストはすべて成功した。マニフェストアプリケーションは機能しませんでした。 「nil
を乗算できません」というエラーが発生しました。 Sigilsは明らかに外れています。
次に、私は弦の鍵で試しました:<%= 0.9 * @processors['count'] %>
。 sigil(facts = { :processors => { :count => 10 } }
)での私のテストは選択されませんでしたが、私の価値は適切に見つけられ、facts = { :processors => { 'count' => 10 } }
で乗算されました。すべてのテストが終了しました。ただし、Can't coerce String into Int
が失敗してマニフェストアプリケーションが失敗しました。
次に、私はstringy値で試しました。テンプレートはまだ<%= 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
レンダリング。
質問:
二つの主要な質問:
- がどのように私は確実に、インライン小数点数学は、この(または任意の)事実と協力を得ることができますか?
rspec-puppet
などを使用して、ファクトリアの値を生産代理タイプで確実に単体テストできますか? 何が価値があるために