我正在使用Pester爲Powershell應用程序編寫測試。
我已經能夠爲大多數函數創建模擬,但一直沒有能夠模擬返回$的函數嗎?變量。我目前正在使用它來評估AWS CLI命令的回報。
這例如用於模擬失敗的AWS CLI命令返回。
有什麼想法?
我正在使用Pester爲Powershell應用程序編寫測試。
我已經能夠爲大多數函數創建模擬,但一直沒有能夠模擬返回$的函數嗎?變量。我目前正在使用它來評估AWS CLI命令的回報。
這例如用於模擬失敗的AWS CLI命令返回。
有什麼想法?
謝謝,我發現你的答案很有用,可以與我的團隊分享,並找到我們自己的解決方案,我們需要的解決方案。這比預期更明顯,只是一點結構。
我們創建了一個輔助函數並通過了$?值爲。
function Test-LastExitCodeIsFalse ($last_exit) {
if ($last_exit) {
return $false
}
$true
以及使用被
aws s3 <an aws command>
if (Test-LastExitCodeIsFalse($?)) {
throw "AWS Exception"
}
使用糾纏,那麼我們就嘲笑試驗LastExitCodeIsFalse函數返回假。我們有一個失敗aws的單元測試:)
希望這會有所幫助。
你應該能夠做到:
Mock AWC-CLI { $ = $true } -Verifiable
如果你希望得到執行相同的功能$?
模擬代碼 - 您可以使用這樣的事情(在如何實際條件相當有限返回如果多條線路同時等執行,將有可能需要根據執行上下文)
Function Test-LastCommandError {
$LastCommand = (History | Select -Last 1).CommandLine
$LastError = $Error[-1].InvocationInfo.Line
$LastCommand -eq $LastError
}
1/1#Success
Test-LastCommandError #returns false
1/0#Error
Test-LastCommandError #returns true
這對我的作品手動執行的每一行進行修改,而不是在一個特設的ISE窗口(因爲它在執行時將所有內容複製粘貼爲一個命令)
$ _通常只是您正在使用的當前項目。你能舉出一些你試圖嘲笑的例子嗎? –
@BenRichards'$?'返回'true/false',具體取決於最後一條命令是否運行正常。 – ConnorLSW
$?是隻讀變量的權利?你怎麼嘲笑它? – Ramana