2017-06-06 8 views
1

私はPesterを使ってPowershellアプリケーションのテストを書いています。

ほとんどの関数でモックを作成できましたが、$を返す関数をモックできませんでしたか?変数。私は現在、AWS CLIコマンドからのリターンを評価するためにこれを使用しています。

これは、たとえば、失敗したAWS CLIコマンドの返信を模擬するためのものです。

どのような考えですか?

+0

$ _通常、現在作業しているアイテムのみです。あなたは模倣しようとしていることのいくつかの例を挙げることができますか? –

+3

@BenRichards '$?'は最後のコマンドがエラーなしで実行されたかどうかによって 'true/false'を返します。 – ConnorLSW

+0

$? readonly変数は正しくありますか?どのようにそれを嘲笑することができますか? – Ramana

答えて

1

ありがとうございました。私のチームと分かち合い、私たちが必要としている解決法を見つけるのに役立つ答えを見つけました。予想よりもはっきりしていて、ちょっとした構造化であった。

補助機能を作成し、$を渡しました。値。

function Test-LastExitCodeIsFalse ($last_exit) { 
    if ($last_exit) { 
     return $false 
    } 
    $true 

とせがむを使用して

aws s3 <an aws command> 
if (Test-LastExitCodeIsFalse($?)) { 
    throw "AWS Exception" 
} 

ている使用法、そして我々はただを返すために、テスト・LastExitCodeIsFalse機能をモック。そして、我々は失敗awsと単体テストを持っている:

これは役立ちます。

0

あなたは行うことができる必要があります:

Mock AWC-CLI { $ = $true } -Verifiable 
2

あなたは$?と同じ機能を実行モックコードを取得するために探している場合 - あなたは、実際にどのようにそれの面ではかなり限定されたこのようなものを(使用することができますリターン複数行を一度などで実行している場合は、おそらく実行コンテキストに応じて変更する必要があります)

Function Test-LastCommandError { 
    $LastCommand = (History | Select -Last 1).CommandLine 
    $LastError = $Error[-1].InvocationInfo.Line 
    $LastCommand -eq $LastError 
} 

1/1#Success 
Test-LastCommandError #returns false 

1/0#Error 
Test-LastCommandError #returns true 

これは、手動でそれ以来(アドホックISEウィンドウ内の各ラインの実行ではなく、私の作品実行時にすべてを1つのコマンドとしてコピー・ペーストする)

関連する問題