1

Pester でいくつかのインフラストラクチャ テストを行っていますが、アプローチ方法がわからないシナリオが繰り返し発生します。

たとえば、必要なすべての Web ロールが IIS で有効になっているかどうかを確認したいとします。必要な 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")

...どちらが良いですが、あまり気分が良くありません...

また、最初の失敗でテストが停止し、各機能を修正した後にテストを再実行する必要があるという 2 つ目の問題があります...

何か案は?

4

1 に答える 1