簡體   English   中英

如何在Pester中模擬一份工作?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM