Je fais des tests d'infrastructure dans Pester et il y a un scénario récurrent que je ne sais pas comment aborder. Par exemple, je veux vérifier si tous les rôles Web requis sont activés sur IIS. J'ai une collection de rôles Web requis et pour chacun d'eux, je veux affirmer qu'il est activé.Assertion sur chaque élément de la collection dans Pester
Mon code actuel ressemble à ceci:
$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"
}
}
}
Il fonctionne dans le sens que le test échouera si l'un des rôles ne sont pas activés/installés. Mais cela est peu utile si la sortie de ce test Pester ressemble à ceci:
Context WebRoles
[-] Has installed proper web roles 2.69s
Expected: {Enabled}
But was: {Disabled}
283: $feature.State | Should Be "Enabled"
Ce résultat ne donne aucune idée de ce qui est une fonctionnalité désactivée.
Y a-t-il une pratique recommandée dans ces scénarios? Je pensais à une manipulation de chaînes ...
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")
}
}
}
qui génèrerait:
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")
... ce qui est mieux, mais il ne se sent pas très bon ...
En outre, il y a un deuxième problème avec le fait que le test s'arrêtera au premier échec et que j'aurais besoin de relancer le test après avoir corrigé chaque caractéristique ...
Des idées?
Wow, je ne savais pas que je peux le faire! Cela résout à la fois mes problèmes - l'expressivité des résultats et arrêter au premier échec. Très agréable! Merci! – jumbo