1

ペスターでのテストデータの範囲についてです。ハッシュテーブル内のキーの存在をチェックする関数をテストしてAdd-HashTableIfNotPresentいます。存在しない場合は追加し、そうでない場合はそのキーにリンクされた値を返します。

Itキーが存在する場合とキーが存在しない場合の 2 つのシナリオをチェックするペスター テスト用の2 つのブロックがあります。$htブロックごとに再作成されることを期待していましたが、2のIt順序を入れ替えると、まだ 3 であるため失敗します。ItReturns existing entry when passed existing key$ht.count

$htテストごとにリセットする方法はありますか、Itそれともブロック内で定義する必要がありますか?

テスト中の機能:

function Add-HashTableIfNotPresent {
    [CmdletBinding()]
    param(
        [hashtable] $sourceTable,
        [string] $keyToCheck
    )

    $subTable = $sourceTable.$keyToCheck
    if(-not $subTable){
        $subTable = @{}
        $sourceTable.$keyToCheck = $subTable
    }
}

テストコード:

Describe 'Add-HashTableIfNotPresent' {
    $ht = @{
        subTable1 = @{
            st1 = "abc"
        }
        subTable2 = @{
            st2 = "def"
        }
    }

    It "Returns existing entry when passed existing key" {
        Add-HashTableIfNotPresent -sourceTable $ht -keyToCheck subTable2
        $ht.Count | Should BeExactly 2
        $value = $ht.subTable2
        $value.count | Should BeExactly 1
        $value.st2 | Should -Be "def"
    }

    It "Adds entry that doesn't exist" {
        Add-HashTableIfNotPresent -sourceTable $ht -keyToCheck subTable3
        $ht.Count | Should BeExactly 3
        $addedValue = $ht.subTable3
        $addedValue | Should -Be $true
        $addedValue.count | Should BeExactly 0
    }
}
4

1 に答える 1