ペスターでのテストデータの範囲についてです。ハッシュテーブル内のキーの存在をチェックする関数をテストしてAdd-HashTableIfNotPresent
います。存在しない場合は追加し、そうでない場合はそのキーにリンクされた値を返します。
It
キーが存在する場合とキーが存在しない場合の 2 つのシナリオをチェックするペスター テスト用の2 つのブロックがあります。$ht
ブロックごとに再作成されることを期待していましたが、2のIt
順序を入れ替えると、まだ 3 であるため失敗します。It
Returns 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
}
}