2016-06-20 5 views
3

PowerShellでスクリプトを作成するには、外部の実行可能ファイル(.exe)を呼び出す必要があります。現在私はTDDのアプローチでこのスクリプトを開発しているので、この呼び出しをこの.exeファイルに偽装する必要があります。Pesterでexeファイルへの呼び出しを擬似する方法は?

私はこれ試してみてください。私はこの回答を得た

Describe "Create-NewObject" { 
    Context "Create-Object" { 
     It "Runs" { 
      Mock '& "c:\temp\my.exe"' {return {$true}} 
      Create-Object| Should Be $true 
     } 
    } 
} 

を:

Describing Create-NewObject 
    Context Create-Object 
    [-] Runs 574ms 
     CommandNotFoundException: Could not find Command & "C:\temp\my.exe" 
     at Validate-Command, C:\Program Files\WindowsPowerShell\Modules\Pester\Functions\Mock.ps1: line 801 
     at Mock, C:\Program Files\WindowsPowerShell\Modules\Pester\Functions\Mock.ps1: line 168 
     at <ScriptBlock>, C:\T\Create-NewObject.tests.ps1: line 13 
Tests completed in 574ms 
Passed: 0 Failed: 1 Skipped: 0 Pending: 0 Inconclusive: 0 

は、関数内でそれらをカプセル化することなく、通話のこの種を模擬する方法はありますか?

答えて

5

私はこの実行可能ファイルの呼び出しを模擬する方法を発見:

function Create-Object 
{ 
    $exp = '& "C:\temp\my.exe"' 
    Invoke-Expression -Command $exp 
} 

モックとのテストがどのように見えるはずです。

Describe "Create-NewObject" { 
    Context "Create-Object" { 
     It "Runs" { 
      Mock Invoke-Expression {return {$true}} -ParameterFilter {($Command -eq '& "C:\temp\my.exe"') 
      Create-Object| Should Be $true 
     } 
    } 
} 
+0

あなた自身を「受け入れる」ことを忘れないでください。答え:) –

関連する問題