如何使用Powershell单元测试框架Pester测试enum
?
我从被测者那里得到的东西似乎是一个字符串而不是我的enum
。
测试导致错误。我得到的是Apple
,而不是我的枚举[FruitType]::Apple
。
...
Expected {[FruitEnum]::Apple}, but got {Apple}.
6: $res.TheFruit | Should -Be [FruitEnum]::Apple
...
这里的Powershell模块使得enum" public"并导出一个返回带有我的Fruit枚举的对象的方法。
enum FruitEnum{
Apple
}
function Get-Fruit{
return @{
TheFruit = [FruitEnum]::Apple
}
}
Export-ModuleMember -Function Get-Fruit
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
}
}
答案 0 :(得分:4)
我偶尔会看到Pester的奇怪之处,并使用以下技巧来修复它们:
($res.TheFruit -eq [FruitEnum]::Apple) | Should Be True
也就是说,执行比较,然后检查结果是否为True,而不是相信Should
将能够断言管道中的某些东西是您期望它的类型。
您可以做的另一项检查是验证对象的类型:
$res.TheFruit.GetType().Fullname | Should Be "FruitEnum"