[英]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.