問題タブ [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.
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 のスタイルでどのように実装しますか? 統合テストは興味深いものであり、依存関係を壊す単体テストは最も興味深いものです。
powershell - Powershell で BDD を使用している人はいますか?
ここstackoverflowで、この質問に関する多くのスレッドを見つけました。彼らは今2歳です。ですから、誰かがscottmuc関数を使用して PowerShell で BDD を実行しているかどうかを知りたいです。一見とてもパワフルに見えます。
あなたの意見は何ですか?誰かが他の非常に効果的な BDD フレームワークを知っていますか? rspecに本当に近いものが欲しいです。
TDD(PSUnit)の提案/指示ではなく、BDDが必要であることに注意してください。
PowerShell で BDD を使用する人は多くありませんが、答えはわかりました :)。PowerShell は単なるスクリプトであるという理由だけで、BDD はまったく役に立たないということですか? 正当な理由とは思えません。
とにかくここに今までのリスト:
powershell - スクリプトを実行せずに関数のみを含めることはできますか?
MyScript.ps1があるとしましょう:
どういうわけか関数をドットソース化することは可能ですか?問題は、上記のスクリプトがドットソースの場合、すべてを実行することです...
Get-Content
関数を使用して解析し、Invoke-Expressionを使用するのが最善のオプションですか...?または、PowerShellのパーサーにプログラムでアクセスする方法はありますか?PSv3を使用するとこれが可能になる可能性がありますが、PSv2で動作する必要[System.Management.Automation.Language.Parser]::ParseInput
があるため、これはオプションではありません。
私が尋ねている理由は、Pester PowerShellユニットテストフレームワークを試していることと、関数のテストを実行する方法が、テストフィクスチャの関数を含むファイルをドットソースすることによるものです。テストフィクスチャは次のようになります。
MyScript.Tests.ps1
unit-testing - Powershell の単体テスト フレームワーク
Powershellユニット テスト フレームワークについて 3 年前に質問がありました。 Powershell で TDD とユニット テストを行うにはどうすればよいですか? 、そしてすべてのフレームワークはその時点ではまったく新しいものでした:
- PSUnit: http://www.psunit.org/
- ペスター: https://github.com/scottmuc/Pester
- PowerSpec: github /shishkin/PowerSpec で
3年後、彼らは進化して成熟したと思います。今、私はTDDをやりたいと思っています(これまでやったことがありません)が、どれを使うべきかわかりません。インターネットで検索すると、PSUnit と Pester が最も使用されているようです。
それらを使用していますか?それぞれの長所と短所はどれですか? 推奨事項はありますか?
ありがとう、
unit-testing - プロパティで「Pester」(PowerShell 単体テスト フレームワーク)を使用する
プロパティを使用してオブジェクトを拡張する PowerShell コードにテキスト フィクスチャをラップしようとしています。Pester が原因と思われるエラーが表示されます。私がやろうとしていることを示す不自然な例を以下に示します。
Pester でプロパティを使用する関数のテストを書くことに成功した人はいますか?
私が得るエラー:
私の機能:
私のテストコード:
powershell - Pester (Powershell BDD) の Create-Fixture が機能しない
ここからの指示に従っています:
http://scottmuc.com/blog/development/pester-bdd-for-the-system-administrator/
モジュールをインストールしてインポートしても、Create-Fixture を実行できないことがわかりました。
誰かがこれに出くわしましたか?
powershell - Pester でモックするときに、switch パラメーターを使用して parameterFilter を使用するにはどうすればよいですか?
Pester を使用して、他のパラメーターの中でも特にスイッチを使用する高度な関数をモックしています。-parameterFilter
switch パラメータを含むモックを作成するにはどうすればよいですか?
私はもう試した:
無駄に。
code-coverage - Pester を使用してすべてのブランチのコード カバレッジを取得するにはどうすればよいですか?
Pester を使用して新しい Chocolatey 関数をテストするために、複数のテスト ケースが作成されています。すべてのブランチがカバーされているかどうかを確認するにはどうすればよいですか?
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
どちらのモックでも機能しません。