我正在 Pester 中进行一些基础设施测试,并且存在重复的场景,我不知道如何处理。
假设,我想检查是否在 IIS 上启用了所有必需的 Web 角色。我有一组必需的 Web 角色,我想为每个角色声明它已启用。
我当前的代码如下所示:
$requiredRoles = @(
"Web-Default-Doc",
"Web-Dir-Browsing",
"Web-Http-Errors",
"Web-Static-Content",
"Web-Http-Redirect"
)
Context "WebRoles" {
It "Has installed proper web roles" {
$requiredRoles | % {
$feature = Get-WindowsOptionalFeature -FeatureName $_ -online
$feature.State | Should Be "Enabled"
}
}
}
如果未启用/安装任何角色,则测试将失败。但是,如果这种 Pester 测试的输出如下所示,那几乎没有用处:
Context WebRoles
[-] Has installed proper web roles 2.69s
Expected: {Enabled}
But was: {Disabled}
283: $feature.State | Should Be "Enabled"
这个结果没有提供任何关于哪个功能是禁用的任何线索。
在这些情况下有什么推荐的做法吗?我在考虑一些字符串操作......
Context "WebRoles" {
It "Has installed proper web roles" {
$requiredRoles | % {
$feature = Get-WindowsOptionalFeature -FeatureName $_ -online
$toCompare = "{0}_{1}" -f $feature.FeatureName,$feature.State
$toCompare | Should Be ("{0}_{1}" -f $_,"Enabled")
}
}
}
这将输出:
Context WebRoles
[-] Has installed proper web roles 2.39s
Expected string length 27 but was 28. Strings differ at index 20.
Expected: {IIS-DefaultDocument_Enabled}
But was: {IIS-DefaultDocument_Disabled}
-------------------------------^
284: $toCompare | Should Be ("{0}_{1}" -f $_,"Enabled")
...哪个更好,但感觉不是很好...
此外,第二个问题是测试将在第一次失败时停止,我需要在修复每个功能后重新运行测试......
有任何想法吗?