2016-07-11 6 views
0

Fluent Assertionsは、あらゆる種類のアサーション用の.NETライブラリですが、PowerShellで動作させることはできません。まったく可能ですか?Fluent AssertionsライブラリをPowerShellで使用することはできますか?

私はライブラリのDLLを追加するアドオンタイプをコマンドレットを使用して、次の例を試してみました:

PS C:\Users\ymm> $test = 'test string' 
PS C:\Users\ymm> $test.[FluentAssertions.AssertionExtensions]::Should().BeNull() 

しかし、次のエラーました:私はあなたがするつもりだと思う

Cannot find an overload for "Should" and the argument count: "0". 
At line:1 char:1 
+ $test.[FluentAssertions.AssertionExtensions]::Should().BeNull() 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : NotSpecified: (:) [], MethodException 
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest 
+1

Pester(https://github.com/pester/Pester)を見ましたか? Powershellのテスト用に書かれているので、ネイティブ.NETライブラリの冗長性はありません。 –

+0

Pesterは良いですが、このライブラリと比較しません。そして、私が覚えている限り、特定のファイル構造と構文が必要です。つまり、Describeブロックなどを使わずにアサーション自体を使用することはできません。 – YMM

答えて

1

を明示的な静的メソッドとして呼び出す必要があります。

は理論的には、これは次のようになります。しかし

[FluentAssertions.AssertionExtensions]::Should($test).BeNull() 

、これは簡単な例ですが、あなたはexplitly後であいまいさを避けるために、引数を入力する必要があります。 powershellはPSObjectという引数をstringやその他の具体的な型の代わりにObjectに解決してしまう可能性が高いです。

+0

残念ながら、それはそのようには機能しません。 – YMM

0

Should、およびFluentアサーションのすべてのアサーションは、PowerShellでサポートされていない拡張メソッドです。

PowerShell固有のアサーションライブラリを使用することをお勧めします。そうしないと、通常の構文で.netライブラリを使用することをお勧めします。

エクステンションメソッドに加えて、非ジェネリッククラスの次のジェネリックメソッドに含まれるものについては、this questionを参照してください。

関連する問題