powershell - 使用 Pester 5 和 PowerShell 7 模拟类函数

标签 powershell pester

有没有人有使用 Pester 5 和 PowerShell 7 模拟点源类函数的示例?

谢谢。

编辑:示例

类\MyClass.ps1:

class MyClass {
    [void] Run() {
        Write-Host "Class: Invoking run..."
    }
}

我的模块.psm1:

# Import classes
. '.\Classes\MyClass.ps1'

# Instantiate classes
$MyClass = [MyClass]::new()

# Call class function
$MyClass.Run()

最佳答案

Pester 只模拟命令 - 不模拟类或它们的方法。

“模拟”PowerShell 类以进行方法分派(dispatch)测试的最简单方法是利用 PowerShell 将所有方法标记为 virtual 的事实,从而允许派生类覆盖它们:

class MockedClass : MyClass
{
  Run() { Write-host "Invoking mocked Run()"}
}

这种方法的好处在于,将输入限制为 MyClass 类型的函数仍将适用于模拟类型:

function Invoke-Run
{
  param([MyClass]$Instance)

  $instance.Run()
}

$mocked = [MockedClass]::new()
Invoke-Run -Instance $mocked    # this still works because [MockedClass] derives from [MyClass]

关于powershell - 使用 Pester 5 和 PowerShell 7 模拟类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65200650/

相关文章:

azure - 获取 azure powershell 上标签以(或包含)特定字符串开头的所有资源 - Azure Powershell

azure - 为什么我的 Azure PowerShell 任务脚本可以使用 find-module 找到模块,但不能使用 import-module?

node.js - Electron -node.js-ng : file path\ng. ps1 无法加载,因为在此系统上禁用运行脚本

powershell - 我可以在 Azure 测试计划中自动化 pester 测试吗?

powershell - 如何从Invoke-Pester获取失败的测试数量?

powershell脚本忽略回车

regex - URL中作为参数传递的特殊字符

powershell - "Path cannot be found"Pester测试结果

powershell - 如何为多个小数点的值范围编写Pester单元测试

powershell - Pester如何测试powershell脚本不具备的功能?