問題タブ [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.

0 投票する
3 に答える
412 参照

powershell - 解決されたパラメーター セットをテストする方法は?

解決されたパラメーター セットの「高度な」関数をチェックする基本的な Pester テストを作成しようとしています。

ありがとう。私はペスターにまったく慣れていないので、アドバイスをいただければ幸いです。...一般的には、上品でコーディングもそれほど良くありません:D

0 投票する
1 に答える
353 参照

powershell - 独自の関数の出力テスト

構成ファイルの内容を返す関数があります。

これで、関数が実際に何かを返すかどうかを確認するだけのテストが Pester で行われました。

構成設定を出力するために何をしても、機能が適切に実行されても、Pester のテストに合格できないようです。

[-] は値を返す必要があります 18ms
予想: 値を空にしないでください
Get-ConfigSettings -path .\settings-test.ps1 -Rollback "1" | BeNullOrEmpty であってはなりません

ここで何か不足していますか?では、関数の出力を適切に処理するにはどうすればよいですか?

0 投票する
1 に答える
1061 参照

powershell - Pester が 2 つのパラメーターを持つコマンドレットをモックしないのはなぜですか?

Pester のテストをしようとしているのですが、奇妙なエラー "A positional parameter cannot be found" (プライベート Python コマンドレットの場合) が表示されます。これは Pester の制限ですか、それとも以下のコードに何か問題がありますか?

TestModule.psm1コード:

関数の Pester コード:

テストコードを実行すると、次のエラーが発生します。

0 投票する
1 に答える
1960 参照

unit-testing - スクリプト ブロックを使用した Invoke-Command で Pester Mock が機能しない

コンソールロガーがあります

次に、動的にロードして呼び出すラッパー関数があります

それを直接呼び出す別のラッパー関数

動的呼び出し用のロガーを追加する

今、私はいくつかのペスターテストを持っています

テスト 2. は常に失敗します。モックを使用していくつかのグローバル変数を設定し、意図した関数の動的な読み込みと呼び出しが機能することをテストで検証/アサートする代わりに、偽のロガー関数を作成することで回避しました。それらのばかげた偽物を書くのではなく、そのようなシナリオでモックを機能させるのは素晴らしいことです!

それがどのように機能するか、またはペスターによってまったくサポートされていないというアイデアはありますか?

PS: 順番にコピーすれば、すべてのコードが機能します

0 投票する
1 に答える
497 参照

unit-testing - Azure コマンドレット呼び出しでの Pester モック エラー PSInvalidCastException

次のように、モジュール内の PowerShell 関数から2 つの Azure コマンドレット、Get-AzureNetworkSecurityGroupおよびSet-AzureNetworkSecurityRuleを "Pester-test" する必要があります。

パラメーター $NsgName、$NsgRule はそれほど重要ではありません。問題は、次のような Set-AzureNetworkSecurityRule をモックするときにエラーが発生することです。

エラーは言う:

何が起こっているのかは明らかです。問題は、タイプINetworkSecurityGroupのオブジェクトをモックする方法がわからないことです。両方の Azure コマンドレットをモックする場合、最初は問題ないと思っていました。

-MockWithを使用してSet-AzureNetworkSecurityRule のモック試しました。

運がない。

誰でも私を正しい方向に向けることができますか?
前もって感謝します

完全なDescribeステートメント を使用したUPDATE

初挑戦

関連する PS モジュールの関数呼び出し:

2 回目の試行、機能しなかった PS 関数の別の実装:

3 回目の試行

0 投票する
1 に答える
1849 参照

unit-testing - Pester: すべてのモック関数がインターセプトされるわけではありません

ModuleMainModuleSqlなど、いくつかのモジュールがあります。ModuleMainの Main-Functionが ModuleSql の 4 つの関数を使用するなど、モジュール間には相互依存関係があります。

Function-Main1.tests.ps1ファイルを作成してFunction-Main1 をテストしました。最初は使用していましたが、パラメーターを使用InModuleScopeしてモックごとにモジュールを指定することに切り替えました。-ModuleName

このテストを実行すると、次の結果が得られます。

次の点に注意してください。

  1. -Sql関数が定義されている ModuleSql はインポートしませんでした。
  2. 私は、(モックしようとしている) SQL 関数が定義されているモジュールではなく、 Main-Functionが定義され-ModuleNameているモジュールに設定する必要があることを観察/解決しました。
  3. 私はInModuleScopeandをいじってみました。-ModuleNameたとえば、一方または他方をModuleSQLに設定しましたが、主にそれが事態を悪化させました。

遊んで、他のモック関数に詳細出力を追加することで、New-SqlConnectionClose-SqlConnectionの両方が傍受されていることを確認しましたが、Invoke-SqlStoredProcとはそうでInvoke-SqlQueryはありません。

Invoke-Sql*さらに詳しく調べてみると、 (モックされた) 関数によって次の例外がスローされていることがわかりますこれ、これらの関数の実際のバージョンが呼び出されたときに予想される動作ですが、モックされたバージョンではパラメーターの型が無視されることを期待しています。

Pester が私の 4 つの機能のうち 2 つしかインターセプトしないのはなぜですか?

0 投票する
1 に答える
528 参照

unit-testing - VS2015 の TestExplorer が Pester モジュールのロードに失敗したのはなぜですか?

Visual Studio 2015 用の Powershell ツールをインストールしてから、VS2015 の Powershell プロジェクト内に tests.ps1 ファイルを作成しました。テスト エクスプローラーは宣言されたテストを認識しますが、テストを実行しようとすると、「結果メッセージ: Pester モジュールの読み込みに失敗しました。モジュール ディレクトリに有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'Pester' は読み込まれませんでした。 ."

VS2015

私の PC に Pester がないことに気付き、GitHub からダウンロードして、そのフォルダーを $env:PSModulePath に追加しました。Powershell はモジュールを識別しましたが、インポートできなかったため、フォルダーを元の場所から c:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ に移動しました。これで、powershell のどのコンソールでもモジュールをインポートできるようになりました。 : ISE、Powershell コンソール、VS2015 の Powershell インタラクティブ ウィンドウ。

次に、テストを再度実行しようとしましたが、同じメッセージが表示され続けます。

0 投票する
2 に答える
1135 参照

powershell - Pester がトラップを使用してエラーをキャッチしないのはなぜですか

このスクリプトを実行すると、なぜ次のような動作になるのか疑問に思っています。PowerShell ISE (v4 ホスト) にスクリプトをロードし、Pester モジュールをロードしました。F5 キーを押してスクリプトを実行します。

次に、次の出力を取得します。

質問

trap{}が最終テストで実行されていないように見えるのはなぜですか?