模拟功能与纠缠不工作
Mocking functions with Pester not working
我的测试中有以下代码:
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
参数的模拟定义有问题,还是我遗漏了什么?
错误是正确的,因为 Get-Partition
cmdlet 没有 -InputObject
参数,尽管您向 Mock 添加了一个参数,但在 Pester 中无法访问它。 Pester 自动模拟参数。
我设法通过使用 CimInstance 构造函数创建预期对象 Get-Disk returns 然后将其作为输入发送到 -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
}
}
我的测试中有以下代码:
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
参数的模拟定义有问题,还是我遗漏了什么?
错误是正确的,因为 Get-Partition
cmdlet 没有 -InputObject
参数,尽管您向 Mock 添加了一个参数,但在 Pester 中无法访问它。 Pester 自动模拟参数。
我设法通过使用 CimInstance 构造函数创建预期对象 Get-Disk returns 然后将其作为输入发送到 -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
}
}