Dar*_*te1 6 powershell mocking pester
我们正试图评估是否Invoke-Command已经被称为一次.
Script.ps1
Get-Job | Remove-Job
Invoke-Command -ScriptBlock {'test'} -ComputerName localhost -AsJob
Wait-Job
Get-Job | Reveive-Job
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在Pester中模拟工作对象.当作业未被模拟时,Wait-Job将抛出一个未收到作业对象的错误.
如何模拟PowerShell作业对象Pester?
一种解决方案可能是让MockInvoke-Command仍然创建一个合法的作业,但执行一些您认为安全的脚本/代码以进行测试.
为此,您需要首先将Invoke-Commandcmdlet放在变量中,以便可以通过该变量使用它(因为Mock它不能直接调用它自己的命令).
例如:
$InvokeCommand = Get-Command Invoke-Command
Mock Invoke-Command {
& $InvokeCommand -ScriptBlock {'some safe alternative code'} -ComputerName localhost -AsJob
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |