Pester和测试enum

问题描述 投票:4回答:1

如何使用Powershell单元测试框架enum测试Pester

我从被测试者那里得到的东西似乎是一个字符串而不是我正确的enum


Testresult

测试导致错误。我得到的是Apple而不是我的枚举[FruitType]::Apple

...
Expected {[FruitEnum]::Apple}, but got {Apple}.
6:         $res.TheFruit | Should -Be [FruitEnum]::Apple
...

Fruit.psm1

这里的Powershell模块使枚举“公开”并导出一个方法,该方法返回带有我的Fruit枚举的对象。

enum FruitEnum{
    Apple
}
function Get-Fruit{
    return @{
        TheFruit = [FruitEnum]::Apple
    }
}
Export-ModuleMember -Function Get-Fruit

Fruit.Tests.ps1

Pester测试调用using来获取枚举,调用被测者并检查结果。

using module .\Fruit.psm1
Import-Module .\Fruit.psm1 -Force
Describe "Get-Fruit" {
        It "returns an enum" {
        $res = Get-Fruit
        $res.TheFruit | Should -Be [FruitEnum]::Apple
    }
}
unit-testing powershell enums pester
1个回答
4
投票

我偶尔会看到Pester的奇怪之处,并使用如下的技巧来解决它们:

($res.TheFruit -eq [FruitEnum]::Apple) | Should Be True

也就是说,执行比较,然后检查结果是否为True,而不是相信Should能够断言管道中的某些东西是您期望它的类型。

您可以做的另一项检查是验证对象的类型:

$res.TheFruit.GetType().Fullname | Should Be "FruitEnum"
© www.soinside.com 2019 - 2024. All rights reserved.