作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要包含在单元测试中的函数,但是我不知道该怎么做。该方法接收一个ErrorRecord对象(来自Invoke-RestMethod调用),获取状态码并生成自定义错误消息。 call 的第一部分如下所示:
function Resolve-RestError {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
$RequestError
)
$statusCode = $requestError.Exception.Response.StatusCode.value__
switch ($statusCode) {
我遇到的问题是ErrorRecord对象的重新生成。我花了很多时间寻找重新创建错误对象的方法,但是我无法准确地重新创建它。
最佳答案
没错,重新创建一个ErrorRecord对象似乎不是太简单。对于这种情况,我的选择是模拟要在测试中模拟的输出,然后通过Export-CliXml
存储该结果,但是在尝试使用ErrorRecord进行操作时,您只能得到Exception.Response,其余的将在转换中丢失(甚至在设置-Depth
值时)。
可能有一种更聪明的方法,但是一种解决方法是按照以下步骤伪造对象(请注意,您没有提供完整的功能,因此我只是创建了它的简化版本以证明它适用于此特定情况):
function Resolve-RestError {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
$RequestError
)
$statusCode = $RequestError.Exception.Response.StatusCode.value__
Return $statusCode
}
Describe 'Resolve-RestError' {
It 'Should handle a 404' {
$ErrorRecord = [pscustomobject]@{
Exception = @{
Response = @{
StatusCode = @{
value__ = 404
}
}
}
}
Resolve-RestError -RequestError $ErrorRecord | Should -Be 404
}
}
关于powershell - 如何在Powershell中使用Pester模拟ErrorRecord?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62577300/
我是一名优秀的程序员,十分优秀!