我有一個簡單的說法,在這一點上什麼都不做,我只是開始使用Pester,但我的目標是模擬Remove-ADGroupMember和其他AD PowerShell命令進行測試。呼叫歷史中的Pester BoundParams空
Param(
[string]$computerList = ".\\computers.csv",
[boolean]$isTest = $false
)
function Remove-Groups(){
Remove-ADGroupMember -Identity "dale" -Members "dale","cameron"
}
和我的測試腳本
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = "../" + (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
. "$here\$sut"
Describe "UninstallUnused - Remove-Groups" {
It "does something useful" {
Mock Remove-ADGroupMember
Remove-Groups
Assert-MockCalled Remove-ADGroupMember -Exactly 1
Assert-MockCalled Remove-ADGroupMember 1 -ParameterFilter {$Identity -eq "dale" -and $Members -contains "dale"}
}
}
第一Assert-MockCalled
線工作,但無論怎樣我嘗試在第二個測試總是失敗。一段時間後,我挖成斷言MockCalled功能可按一個調試器,它看起來像 - 成員參數都迷路
畫面中的值高於我的斷言MockCalled功能很Mock.ps1,並且您可以看到傳遞給成員的值缺失。如果我只向Remove-ADGroupMember模擬傳遞1值,如下所示:Remove-ADGroupMember -Identity "dale" -Members "dale"
我在BoundParams中看到的值是{}
而不是{, }
,如您在屏幕截圖中看到的那樣。
這是一個問題,我正在做的方式或問題的方式,病人閱讀PARAMS等從Remove-ADGroupMember?
如果你只能做第二'斷言MockCalled'它的工作原理或都是'Members'值仍然失去了什麼? – briantist
是的......我評論了第一個Assert-MockCalled語句和成員= {,} – Dale