2

概要: 別のクックブックから組み込むことを意図したライブラリ クックブックをテストするにはどうすればよいでしょうか?

詳細: LWRP と、実行場所に基づいていくつかの属性を設定する最小限のデフォルト レシピを含むクックブックを作成しています。ただし、LWRP によって定義された新しいリソースは、他のクックブックから使用されることを意図しています。

たとえば、ライブラリのクックブックでは、mylib/resources/example.rb と mylib/providers/example.rb で mylib_example を定義して実装しています。「クライアント」クックブックは、たとえばclient/recipes/default.rbから次のように使用します。

include_recipe 'mylib'
mylib_example "widget1" do
    magic_number '42'
end

ライブラリのクックブック自体からそのリソースの使用状況をテストするにはどうすればよいですか? フレームワークについては気にしていませんが、現在 Test Kitchen と Chefspec で期限切れになっています。

4

2 に答える 2

2

テストラッパークックブック

どちらの場合も、LWRP を実行する「テスト」クックブックが必要です。通常、それはtest-mylwrp_cookbookまたはディレクトリmylwrp_cookbook-testにあります。mylwrp_cookbook/test/cookbooks私は通常、ライブラリ クックブックのリソースごとに、テスト クックブックに 1 つのレシピを用意しています。次に、ChefSpec または TestKitchen でテスト クックブック レシピを使用します。また、mylwrp_cookbook/testknife/berkshelf によってchef-server にアップロードされたクックブックが肥大化しないように、ディレクトリを .chefignore ファイルに追加してください。

LWRP リソース

シェフスペックを使用するかキッチンを使用するかは、LWRP コードがどのように機能するかによって異なります。LWRP がプロバイダー内の他のリソースを厳密に宣言している場合、できれば を使用している場合use_inline_resourcesは、ChefSpec を使用します。ただし、LWRP でシステム コールを行う場合は、Test Kitchen を使用する必要があります。ChefSpec はリソースを実行しないため、他のリソースを作成する以上のことを行うライブラリをテストする場合にはあまり役に立ちません。

ChefSpec

私のアプローチ方法の例が必要な場合は、 Chef Pushitでほとんどの仕様テストを作成しました。step_into
の使用に特に注意し、 matchers.rbを含めることを忘れないでください 。 matchers.rb ファイルは、ライブラリ クックブックを使用するクックブックでのchefspec テストをより簡単にします。

テストキッチン

同じクックブックでいくつかのキッチン テストを確認できます。一般的な概念は同じです。ライブラリ クックブック内にテスト クックブックを作成します。

于 2014-10-02T03:13:22.143 に答える
0

Chefspec では LWRP をテストできますが、ファイル /libraries/matchers.rb でリソースを定義する必要があります。次のリンクでは、 matchers.rb を作成し、chefspec でテストする方法を説明しています。

http://givens.io/2014/01/chefspec-custom-matchers-for-lwrps/

私の英語でごめんなさい!! よろしくお願いします

于 2014-10-02T03:00:01.197 に答える