纠缠和测试枚举
Pester and testing for enum
如何使用 Powershell 单元测试框架 Pester 测试 enum
?
我从测试者那里得到的似乎是一个字符串,而不是我自己的enum
。
测试结果
测试结果出错。我得到的是 Apple
而不是我的枚举 [FruitType]::Apple
.
...
Expected {[FruitEnum]::Apple}, but got {Apple}.
6: $res.TheFruit | Should -Be [FruitEnum]::Apple
...
水果.psm1
此处的 Powershell 模块生成枚举 "public" 并导出一个方法,该方法 returns 一个带有我的 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
}
}
我偶尔会看到 Pester 出现奇怪的问题,并使用如下技巧来修复它们:
($res.TheFruit -eq [FruitEnum]::Apple) | Should Be True
也就是说,执行比较然后检查结果是否为真,而不是相信 Should
能够断言流水线中的某些东西是您期望的类型。
您可以做的另一项检查是验证对象的类型:
$res.TheFruit.GetType().Fullname | Should Be "FruitEnum"
如何使用 Powershell 单元测试框架 Pester 测试 enum
?
我从测试者那里得到的似乎是一个字符串,而不是我自己的enum
。
测试结果
测试结果出错。我得到的是 Apple
而不是我的枚举 [FruitType]::Apple
.
...
Expected {[FruitEnum]::Apple}, but got {Apple}.
6: $res.TheFruit | Should -Be [FruitEnum]::Apple
...
水果.psm1
此处的 Powershell 模块生成枚举 "public" 并导出一个方法,该方法 returns 一个带有我的 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
}
}
我偶尔会看到 Pester 出现奇怪的问题,并使用如下技巧来修复它们:
($res.TheFruit -eq [FruitEnum]::Apple) | Should Be True
也就是说,执行比较然后检查结果是否为真,而不是相信 Should
能够断言流水线中的某些东西是您期望的类型。
您可以做的另一项检查是验证对象的类型:
$res.TheFruit.GetType().Fullname | Should Be "FruitEnum"