有没有人有使用 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/