zet*_*t42 4 powershell wrapper pester
我正在尝试为 Pester 的 cmdlet 创建一个包装器(代理)Should。可能的用例包括即使在成功的情况下也可以透明地记录测试输入,并改进 Pester 记录某些类型对象的方式,例如hashtable.
作为Should一个高级函数,通过$argssplatting 转发参数不起作用。
所以我尝试使用生成一个包装器,如这个答案System.Management.Automation.ProxyCommand::Create()所述:
$cmd = Get-Command Should
$wrapperSource = [System.Management.Automation.ProxyCommand]::Create( $cmd )
$wrapperSource >should_wrapper.ps1
Run Code Online (Sandbox Code Playgroud)
调用包装器时,Powershell 输出以下错误消息:
应该:无法使用指定的命名参数解析参数集。发出的一个或多个参数不能一起使用或提供的参数数量不足。
看起来包装器生成器不理解 的动态参数声明Should。
如何在Should不重复 Pester 代码的情况下为 Pester 编写通用包装器?
看起来包装器生成器不理解 Should 的动态参数声明。
包装器生成器默认省略。 dynamicparam幸运的是,这个问题可以通过一些模板轻松解决:
$cmd = Get-Command Should
$pct = [System.Management.Automation.ProxyCommand]
$wrapperSource = @(
$pct::GetCmdletBindingAttribute($cmd)
'param('
$pct::GetParamBlock($cmd)
')'
'dynamicparam {'
$pct::GetDynamicParam($cmd)
'}'
'begin {'
$pct::GetBegin($cmd)
'}'
'process {'
$pct::GetProcess($cmd)
'}'
'end {'
$pct::GetEnd($cmd)
'}'
) -join [Environment]::NewLine
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |