問題タブ [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 投票する
6 に答える
15778 参照

unit-testing - powershellでTDDと単体テストを行う方法は?

MS がすべての新しいサーバー製品に PowerShell を搭載するようになったことで、私は (しぶしぶながら) 真剣に取り組む必要があると考え始めています。「真剣に取り組む」ことの一部は TDD です。パワー シェル スクリプトを単体テストするための適切な方法を見つけましたか?

Mr Geek Noiseからモッキングのサンプルを見つけましたが、 RhinoMocksのようなものが本当に欲しいです。Brian Hartsockは、MS Test の powershell 文字列でテストを実行するサンプルを持っています。少しハックですが、うまくいくようです。

私が欲しいのは、「実際の」言語と同じくらいクリーンな Powershell TDD エクスペリエンスです。


明確にするために更新します。

最初の 2 つの回答は、私を Powershell のテストから遠ざけようとしています。意見は興味深いです。powershellでテストするのが良い考えかどうか知りたくありません。これは、別のフォーラムで尋ねるべき主観的な質問です。PowerShell の単体テストのソリューションが必要です。それが悪い考えだと思う場合 (そうかもしれません)、楽しい学術的な質問として扱ってください。

  • はい、スクリプト言語は異種システムを結び付けます。ただし、すでに指摘したように、動的言語では継ぎ目を嘲笑したり壊したりすることも簡単です。
  • 「デバッグ」について尋ねているのではありません。デバッグは非常に役立つトピックです。他の人に聞いてもらいます。
  • おそらく、PS スクリプトは単純なはずです。この言語はモジュール性をサポートしており、複雑なプロセスが PS に実装されることは避けられません (たとえ悪い考えであっても)。
  • この質問に対する答えは、「できません」ではありません。(リンクされたブログから - 少し古いですが) 何人かの人々がこの問題について前進していることがわかります。

繰り返しますが、 Powershellロジックの自動テストを xUnit のスタイルでどのように実装しますか? 統合テストは興味深いものであり、依存関係を壊す単体テストは最も興味深いものです。

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

powershell - Powershell で BDD を使用している人はいますか?

ここstackoverflowで、この質問に関する多くのスレッドを見つけました。彼らは今2歳です。ですから、誰かがscottmuc関数を使用して PowerShell で BDD を実行しているかどうかを知りたいです。一見とてもパワフルに見えます。

あなたの意見は何ですか?誰かが他の非常に効果的な BDD フレームワークを知っていますか? rspecに本当に近いものが欲しいです。

TDD(PSUnit)の提案/指示ではなく、BDDが必要であることに注意してください。


PowerShell で BDD を使用する人は多くありませんが、答えはわかりました :)。PowerShell は単なるスクリプトであるという理由だけで、BDD はまったく役に立たないということですか? 正当な理由とは思えません。

とにかくここに今までのリスト:

  • Pester 、 rspecのようなものにはるかに近い
  • PowerSpecは、ほんの一部のようですshould
0 投票する
2 に答える
1320 参照

powershell - スクリプトを実行せずに関数のみを含めることはできますか?

MyScript.ps1があるとしましょう:

どういうわけか関数をドットソース化することは可能ですか?問題は、上記のスクリプトがドットソースの場合、すべてを実行することです...

Get-Content関数を使用して解析し、Invoke-Expressionを使用するのが最善のオプションですか...?または、PowerShellのパーサーにプログラムでアクセスする方法はありますか?PSv3を使用するとこれが可能になる可能性がありますが、PSv2で動作する必要[System.Management.Automation.Language.Parser]::ParseInputがあるため、これはオプションではありません。

私が尋ねている理由は、Pester PowerShellユニットテストフレームワークを試していることと、関数のテストを実行する方法が、テストフィクスチャの関数を含むファイルをドットソースすることによるものです。テストフィクスチャは次のようになります。

MyScript.Tests.ps1

0 投票する
0 に答える
568 参照

unit-testing - Powershell の単体テスト フレームワーク

Powershellユニット テスト フレームワークについて 3 年前に質問がありました。 Powershell で TDD とユニット テストを行うにはどうすればよいですか? 、そしてすべてのフレームワークはその時点ではまったく新しいものでした:

3年後、彼らは進化して成熟したと思います。今、私はTDDをやりたいと思っています(これまでやったことがありません)が、どれを使うべきかわかりません。インターネットで検索すると、PSUnit と Pester が最も使用されているようです。

それらを使用していますか?それぞれの長所と短所はどれですか? 推奨事項はありますか?

ありがとう、

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

unit-testing - プロパティで「Pester」(PowerShell 単体テスト フレームワーク)を使用する

プロパティを使用してオブジェクトを拡張する PowerShell コードにテキスト フィクスチャをラップしようとしています。Pester が原因と思われるエラーが表示されます。私がやろうとしていることを示す不自然な例を以下に示します。

Pester でプロパティを使用する関数のテストを書くことに成功した人はいますか?

私が得るエラー:

私の機能:

私のテストコード:

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

powershell - Pester (Powershell BDD) の Create-Fixture が機能しない

ここからの指示に従っています:

http://scottmuc.com/blog/development/pester-bdd-for-the-system-administrator/

モジュールをインストールしてインポートしても、Create-Fixture を実行できないことがわかりました。

誰かがこれに出くわしましたか?

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

powershell - Pester でモックするときに、switch パラメーターを使用して parameterFilter を使用するにはどうすればよいですか?

Pester を使用して、他のパラメーターの中でも特にスイッチを使用する高度な関数をモックしています。-parameterFilterswitch パラメータを含むモックを作成するにはどうすればよいですか?

私はもう試した:

無駄に。

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

code-coverage - Pester を使用してすべてのブランチのコード カバレッジを取得するにはどうすればよいですか?

Pester を使用して新しい Chocolatey 関数をテストするために、複数のテスト ケースが作成されています。すべてのブランチがカバーされているかどうかを確認するにはどうすればよいですか?

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

unit-testing - パイプライン化されたコマンドで動作するように Pester を仕上げる方法

この PowerShell 関数は、特定の文字列を含まないファイルを識別します。

Get-ChildItem と Select-String をモックして Pester 単体テストを作成しようとしていますが、問題が発生しました。どちらも同じように失敗する 2 つの試みを次に示します。最初のテストではモックを使用parameterFilterして区別しますが、2 番目のテストではこれを実行するためのロジックをmockCommandそれ自体に追加します。

Select-String-pathパラメーターが$_.FullName代わりになるようにテストを変更すると$_、両方のテストに合格します。しかし、実際には(つまり、モックなしで行を実行すると)$_、. (これは とも正しく動作し$_.FullNameます。) したがって、実際の Select-String は、Path パラメーターの FileInfo オブジェクトの配列から FullName をマップできるようです (ただし、それを行うためのパラメーター エイリアスがあったことはわかりませんでした)。

私の質問: 元のコードをそのままにしておくことはでき$_ますか? たとえば、$Path.FullNameどちらのモックでも機能しません。