我的测试中有以下代码:
It "Set mock partitions"{
Mock Get-Disk {
return [PSCustomObject]@{
SerialNumber = "SERIAL"
}
}
Mock Get-Partition {
param([PSCustomObject] $InputObject)
return @([PSCustomObject]@{
PartitionNumber = 1
},[PSCustomObject]@{
PartitionNumber = 2
})
}
Custom-Function
}在我的主脚本中,我有以下功能:
function Custom-Function(){
$Disk = Get-Disk
$Partition = Get-Partition -InputObject $Disk
}当我运行测试时,会收到以下错误消息:

错误发生在调用Get-Partition -InputObject $Disk的行上。我对InputObject参数的模拟定义有什么问题吗,或者我遗漏了什么?
发布于 2022-04-21 23:59:56
错误是正确的,因为Get-Partition cmdlet没有一个-InputObject参数,尽管您在Mock中添加了一个参数,但它在Pester中是不可访问的。纠缠莫克参数自动。
通过使用CimInstance构造函数创建预期的对象,获取磁盘返回,然后将其作为输入发送到-Disk参数,我成功地获得了一个工作示例:
Describe 'Tests' {
BeforeAll {
function Custom-Function() {
$Disk = Get-Disk
$Partition = Get-Partition -Disk $Disk
}
}
It "Set mock partitions" {
Mock Get-Disk {
$Result = [Microsoft.Management.Infrastructure.CimInstance]::new('MSFT_Disk','root/Microsoft/Windows/Storage')
$Result | Add-Member -Name SerialNumber -Value 'SERIAL' -MemberType NoteProperty
Return $Result
}
Mock Get-Partition {
return @([PSCustomObject]@{
PartitionNumber = 1
}, [PSCustomObject]@{
PartitionNumber = 2
})
}
Custom-Function
Assert-MockCalled Get-Disk
Assert-MockCalled Get-Partition
}
}https://stackoverflow.com/questions/71960824
复制相似问题