我的測驗中有以下代碼:
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,或者我缺少其他什么?
uj5u.com熱心網友回復:
該錯誤是正確的,因為Get-Partitioncmdlet 沒有-InputObject引數,盡管您在 Mock 中添加了一個引數,但在 Pester 中無法訪問它。Pester 自動模擬引數。
-Disk通過使用 CimInstance 建構式創建 Get-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 ://github.com/pester/Pester/issues/1944
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462219.html
下一篇:將此cmdlet轉換為腳本:Get-Content-PathC:\Users\Einar\Desktop\log\*-filter*1234567.l??og.txt|選擇-前2|選擇-la
