zet*_*t42 4 powershell wrapper pester
我正在尝试为 Pester 的 cmdlet 创建一个包装器(代理)Should
。可能的用例包括即使在成功的情况下也可以透明地记录测试输入,并改进 Pester 记录某些类型对象的方式,例如hashtable
.
作为Should
一个高级函数,通过$args
splatting 转发参数不起作用。
所以我尝试使用生成一个包装器,如这个答案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 次 |
最近记录: |