[英]How to mock a job in Pester?
我们正在尝试评估Invoke-Command
是否已被调用一次。
Script.ps1
Get-Job | Remove-Job
Invoke-Command -ScriptBlock {'test'} -ComputerName localhost -AsJob
Wait-Job
Get-Job | Reveive-Job
Script.Tests.ps1
Describe 'Test' {
Mock Invoke-Command {
# Mock here
}
It 'should be green' {
."$here\$sut" @Params
Assert-MockCalled -CommandName Invoke-Command -Times 1 -Exactly -Scope It
}
}
问题是在Pester中模拟工作对象。 当作业未被Wait-Job
, Wait-Job
将抛出一个错误,表明它没有收到作业对象。
如何在Pester
模拟PowerShell作业对象?
一个解决方案可能是让Mock
of Invoke-Command仍然创建一个合法的作业,但执行一些您认为安全的脚本/代码以进行测试。
为此,您需要首先将Invoke-Command
cmdlet放在变量中,以便可以通过该变量使用它(因为Mock
不能直接调用它自己的命令)。
例如:
$InvokeCommand = Get-Command Invoke-Command
Mock Invoke-Command {
& $InvokeCommand -ScriptBlock {'some safe alternative code'} -ComputerName localhost -AsJob
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.