問題タブ [pester]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 関数へのパイプライン入力
HDInsight クラスターを作成するために使用される次の作業コードがあります。
パイプラインを使用していることに注意してください。ここで、このコードをテストするために( Pesterを使用して) 自動化されたテストを書きたいと思います。そのために、私はプロキシ関数と呼ばれるものでコマンドレット呼び出しをラップし、スプラッティングを使用してパラメーター値を渡します。これにより、テスト目的でそれらを簡単にモックできます。次に例を示します。
このコードを実行しようとすると、エラーが発生します。
Set-AzureHDInsightDefaultStorageProxy -StorageAccountName ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>] 例外:コマンドがパイプライン入力を使用しないか、入力とそのプロパティがパイプライン入力を使用するパラメーターのいずれとも一致しないため、入力オブジェクトをコマンドのパラメーターにバインドできません。
では、パイプライン入力を受け入れるように関数を変更する必要があります。Write PowerShell Functions That Accept Pipelined Input を読み、それに基づいてプロキシ関数を次のように書き直しました。
しかし、それは同じエラーで失敗しました。
明らかに、Powershell のスキル/知識が不足しているため、ここで失望しているので、関数を書き直してパイプライン入力を正常に受け入れて使用する方法を誰かが教えてくれることを願っています。
プロキシ関数を記述しているコマンドレットの定義は次のとおりです: Set-AzureHDInsightDefaultStorage。-Config パラメーターがパイプライン入力を許可するように設定されていることに気付きました。
そのため、プロキシ関数で同じことを指定する必要があると思いますが、その方法がわかりません。
powershell - Pester でべき等でない Web メソッドをテストする
Set-PropertyValue
SharePoint リスト アイテムのプロパティ値を設定するPowerShell コマンド ( ) をテストしようとしています。Invoke-WebMethod
関数は実際の作業に関数 do を使用します。
私の現在のSet-PropertyValue.Test.ps1
ファイル:
私はいくつかの理由でこれが好きではありません:
- 外部依存
Get-PropertyValue
- テスト分離なし。SharePoint リストに変更が加えられた
- リスト項目を望ましくない状態に平準化する可能性
- おそらくループで、複数のプロパティを簡単にテストするように構造化されていないテスト
これをテストするより良い方法はありますか?
powershell - Pester をリモートでインストールして起動する
私は PowerShell、Pester 、および新しい VSO ビルド システムを初めて使用し、チェックインごとに Pester でテストを実行しようとしています。チェックインごとに実行する単純な PowerShell スクリプトをセットアップして構成しました。
最初に、VSO チームがこれを想定して共通の単体テスト フレームワークをセットアップしたかどうかを確認するために、単純に Invoke-Pester を試してみましたが、次の予測可能な結果になりました。
私はPSGetを使用しようとしました:
しかし、それも機能していません:
Pester をリモートでインストールして実行し、単体テストを実行するにはどうすればよいですか?
unit-testing - コマンドをモックし、モックが呼び出された回数に基づいて異なる結果を取得する
Pester を使用して、作成したコードの単体テストを行っています。Test-Path
テストでは、パラメーター フィルターを使用してモックを作成します。
以下は、私がやっていることの疑似コードです:
Test-Path
I want to returnへの最初の呼び出し$false
で、2 回目の呼び出しで I want to return $true
。これを達成する方法はいくつか考えられますが、それらは正しくないと感じています。
最初の呼び出しでは
Path
パラメータを使用し、2 回目の呼び出しでは を使用しますLiteralPath
。それぞれに forを持つ 2 つのモックParameterFilter
を用意します。テストを容易にするためにコードをハッキングするという考えは好きではありません。Path
とのパラメータを持つ関数を作成しますInstanceNumber
。関数のモックを作成します。これは上記よりも優れていますが、テスト目的のためだけにパラメーターを使用するという考えは好きではありません。
私は見て、n番目の呼び出しに基づいてモックする方法を見つけることができません. Pester はこれを容易にしますか? そうでない場合、私が望むものを達成するためのよりクリーンな方法はありますか?
powershell - ペスターを使用した PowerShell DSC スクリプト クラスのテスト - タイプ [ClassName] が見つかりません
ペスターの助けを借りて、クラスとして記述されたいくつかのカスタム DSC リソースをテストしようとしています。ただし、クラスを別のファイルで使用できるようにする方法を見つけるのに苦労しています。これは実際には厄介な問題ではありません.powershellでもこれを行うことはできません. SxDeployment.psm1 ファイルの次のようなクラスを含むモジュールがあります。
このモジュールには、SxWindowsService クラスを 'DscResourcesToExport' としてリストしている対応する .psd1 があります。モジュールとして登録されています。Get-Module -ListAvailable を実行するとこのモジュールが表示され、Import-Module を実行することもできます。
私の質問は、別のファイルからこのクラスへの参照を作成するにはどうすればよいですか?
次のような別のファイル test.ps1 があるとします
「タイプ [SxWindowsService] が見つかりません」というエラーが表示されます。
更新 もう少しいじくり回した後、.psm1 ファイルを .ps ファイルに変更し、import-module ステートメントを . .\SxDeployment.ps1. 問題は、DSC 構成の外部にある DSC リソース モジュール ファイルで定義されたリソースをどのように消費するかということです。