powershell - 使用 Pester 5 和 PowerShell 7 模拟类函数
问题描述
有没有人有使用 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 类的最简单方法是利用 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]
推荐阅读
- laravel - How to get the materials from pivot table?
- javascript - 如何编写一个接受参数的 NectarJS 程序?
- odoo - 如何在数据库中保存 qty_available 以便在每个产品 pos odoo 上显示它?
- ios - 如何获得一个布尔值,指示它在滑动动作期间是否在 UITABLEVIEWCELL 中滑动?
- javascript - 如何在ionic 3中将视频文件从ios转换为base64
- amazon-web-services - 如何在不创建新 ec2-instance 的情况下更改 ec2-instance 的 pem 文件?
- python - 错误:TypeError:“int64”类型的对象不是 JSON 可序列化和 json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)
- javascript - 当 Vanilla 可以完成这项工作时,我应该在 Web SPA 应用程序中使用 ReactJS 吗?
- javascript - 浏览器/标签关闭显示确认,如“退出”和“取消”
- react-native - this.state 在 render 和 componentWillMount 中未定义