我正在使用 Pester 为 PowerShell 应用程序编写测试。
我已经能够为大多数函数创建模拟,但我无法模拟返回$? 多变的。我目前正在使用它来评估 AWS CLI 命令的返回。
例如,这是为了模拟失败的 AWS CLI 命令返回。
有什么想法吗?
我正在使用 Pester 为 PowerShell 应用程序编写测试。
我已经能够为大多数函数创建模拟,但我无法模拟返回$? 多变的。我目前正在使用它来评估 AWS CLI 命令的返回。
例如,这是为了模拟失败的 AWS CLI 命令返回。
有什么想法吗?
如果您正在寻找执行$?
与根据执行上下文进行修改):
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 窗口(因为它在执行时将所有内容复制粘贴为一个命令)。
我们创建了一个辅助函数并传递了$? 价值。
function Test-LastExitCodeIsFalse ($last_exit) {
if ($last_exit) {
return $false
}
$true
}
和一个用法是
aws s3 <an aws command>
if (Test-LastExitCodeIsFalse($?)) {
throw "AWS Exception"
}
使用 Pester,然后我们只需模拟 Test-LastExitCodeIsFalse 函数以返回false。我们有一个失败的 AWS 实例的单元测试:)
你应该能够做到:
Mock AWC-CLI { $ = $true } -Verifiable