首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pester不工作的模拟函数

Pester不工作的模拟函数
EN

Stack Overflow用户
提问于 2022-04-21 21:01:08
回答 1查看 167关注 0票数 1

我的测试中有以下代码:

代码语言:javascript
复制
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
}

在我的主脚本中,我有以下功能:

代码语言:javascript
复制
function Custom-Function(){
  $Disk = Get-Disk
  $Partition = Get-Partition -InputObject $Disk
}

当我运行测试时,会收到以下错误消息:

错误发生在调用Get-Partition -InputObject $Disk的行上。我对InputObject参数的模拟定义有什么问题吗,或者我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 23:59:56

错误是正确的,因为Get-Partition cmdlet没有一个-InputObject参数,尽管您在Mock中添加了一个参数,但它在Pester中是不可访问的。纠缠莫克参数自动。

通过使用CimInstance构造函数创建预期的对象,获取磁盘返回,然后将其作为输入发送到-Disk参数,我成功地获得了一个工作示例:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71960824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档