2

Pester を使用して、作成したコードの単体テストを行っています。Test-Pathテストでは、パラメーター フィルターを使用してモックを作成します。

Mock -CommandName 'Test-Path' -MockWith { return $false } `
    -ParameterFilter { $LiteralPath -and $LiteralPath -eq 'c:\dummy.txt' }

以下は、私がやっていることの疑似コードです:

If ( Test-Path -LiteralPath c:\dummy.txt )
{
    return "Exists"
}
else
{
    Attempt to get file

    If ( Test-Path -LiteralPath c:\dummy.txt )
    {
        return "File obtained"
    }   
}

Test-PathI want to returnへの最初の呼び出し$falseで、2 回目の呼び出しで I want to return $true。これを達成する方法はいくつか考えられますが、それらは正しくないと感じています。

  1. 最初の呼び出しではPathパラメータを使用し、2 回目の呼び出しでは を使用しますLiteralPath。それぞれに forを持つ 2 つのモックParameterFilterを用意します。テストを容易にするためにコードをハッキングするという考えは好きではありません。

  2. Pathとのパラメータを持つ関数を作成しますInstanceNumber。関数のモックを作成します。これは上記よりも優れていますが、テスト目的のためだけにパラメーターを使用するという考えは好きではありません。

私は見て、n番目の呼び出しに基づいてモックする方法を見つけることができません. Pester はこれを容易にしますか? そうでない場合、私が望むものを達成するためのよりクリーンな方法はありますか?

4

2 に答える 2