我们正尝试评估<tr><td( [^>]*)?>(.(?!</td>)){89,}.</td></tr>
是否已经被正确调用过一次。
Script.ps1
Invoke-Command
Script.Tests.ps1
Get-Job | Remove-Job
Invoke-Command -ScriptBlock {'test'} -ComputerName localhost -AsJob
Wait-Job
Get-Job | Reveive-Job
问题是在Pester中模拟了作业对象。当不模拟作业时,Describe 'Test' {
Mock Invoke-Command {
# Mock here
}
It 'should be green' {
."$here\$sut" @Params
Assert-MockCalled -CommandName Invoke-Command -Times 1 -Exactly -Scope It
}
}
将引发一个错误,即它没有收到作业对象。
如何在Wait-Job
中模拟PowerShell作业对象?
答案 0 :(得分:6)
一种解决方案可能是让Invoke-Command的Mock
仍然创建合法的作业,但是执行一些您认为安全的脚本/代码以进行测试。
为此,您需要首先将Invoke-Command
cmdlet放入变量中,以便可以通过该变量使用它(因为Mock
不能直接调用其自身的命令)。
例如:
$InvokeCommand = Get-Command Invoke-Command
Mock Invoke-Command {
& $InvokeCommand -ScriptBlock {'some safe alternative code'} -ComputerName localhost -AsJob
}