这是关于 Pester 中测试数据的范围。我正在测试一个函数Add-HashTableIfNotPresent
,它检查哈希表中是否存在一个键,如果它不存在,则添加它,否则它返回链接到该键的值。
我有 2It
个块用于我的纠缠测试,用于检查 2 个场景 - 密钥存在和密钥不存在。我期待$ht
为每个It
块重新创建,但如果我交换我的 2 It
s的顺序则不是这样,Returns existing entry when passed existing key
因为$ht.count
仍然是 3。
有没有办法$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
}
}