gpt4 book ai didi

powershell - 纠缠 ParameterFilter 与 Assert-MockCalled 不匹配

转载 作者:行者123 更新时间:2023-12-02 23:21:52 24 4
gpt4 key购买 nike

我们正在尝试检查 CmdLet Start-ScheduledTask 是否已为特定计划任务准确调用一次。但由于某种原因,ParameterFilter 不匹配。

代码

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'

Function New-TaskObjectsHC {
Param (
[Parameter(Mandatory, ValueFromPipeline)]
[HashTable[]]$Hash
)

Process {
foreach ($H in $Hash) {
$Obj = New-Object -TypeName 'Microsoft.Management.Infrastructure.CimInstance' -ArgumentList @('MSFT_ScheduledTask')
$H.GetEnumerator() | ForEach-Object {
$Obj.CimInstanceProperties.Add([Microsoft.Management.Infrastructure.CimProperty]::Create($_.Key,$_.Value, [Microsoft.Management.Infrastructure.CimFlags]::None))
}
$Obj
}
}
}

Describe 'Monitor sheduled tasks' {
it 'test' {
Mock Get-ScheduledTask {
@(
@{
TaskName = 'My task'
State = 'Running'
}
) | New-TaskObjectsHC
}
Mock Start-ScheduledTask

Start-ScheduledTask -InputObject (Get-ScheduledTask)

Assert-MockCalled Start-ScheduledTask -Scope it -Times 1 -ParameterFilter {
($TaskName -eq 'My task')
}
}
}

当我们删除 ParameterFilter 时,我们可以清楚地看到 CmdLet 已被调用一次。所以我假设过滤器中一定存在语法错误。

最佳答案

问题修复:

Assert-MockCalled Start-ScheduledTask -Scope it -Times 1 -ParameterFilter {
($InputObject.TaskName -eq 'My task')
}

关于powershell - 纠缠 ParameterFilter 与 Assert-MockCalled 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48804431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com