2017-06-06 89 views
1

我正在使用Pester爲Powershell應用程序編寫測試。

我已經能夠爲大多數函數創建模擬,但一直沒有能夠模擬返回$的函數嗎?變量。我目前正在使用它來評估AWS CLI命令的回報。

這例如用於模擬失敗的AWS CLI命令返回。

有什麼想法?

+0

$ _通常只是您正在使用的當前項目。你能舉出一些你試圖嘲笑的例子嗎? –

+3

@BenRichards'$?'返回'true/false',具體取決於最後一條命令是否運行正常。 – ConnorLSW

+0

$?是隻讀變量的權利?你怎麼嘲笑它? – Ramana

回答

1

謝謝,我發現你的答案很有用,可以與我的團隊分享,並找到我們自己的解決方案,我們需要的解決方案。這比預期更明顯,只是一點結構。

我們創建了一個輔助函數並通過了$?值爲

function Test-LastExitCodeIsFalse ($last_exit) { 
    if ($last_exit) { 
     return $false 
    } 
    $true 

以及使用被

aws s3 <an aws command> 
if (Test-LastExitCodeIsFalse($?)) { 
    throw "AWS Exception" 
} 

使用糾纏,那麼我們就嘲笑試驗LastExitCodeIsFalse函數返回。我們有一個失敗aws的單元測試:)

希望這會有所幫助。

0

你應該能夠做到:

Mock AWC-CLI { $ = $true } -Verifiable 
2

如果你希望得到執行相同的功能$?模擬代碼 - 您可以使用這樣的事情(在如何實際條件相當有限返回如果多條線路同時等執行,將有可能需要根據執行上下文)

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窗口(因爲它在執行時將所有內容複製粘貼爲一個命令)

相關問題