Приставать к "Should -BeLike"

У меня есть такой тест:

It 'Should not find environment' {

    {Add-Patchgroup -ComputerName $serversHash.serverWithNotExistingEnvironment -WarningVariable warning -WarningAction SilentlyContinue}
    $warning  | Should -BeLike ('*55555*')
}

$warning содержит эту строку (точно так, как вы видите здесь с новой строкой и пробелом во второй строке):

Could not add <nameOfTheServer> to patchgroup
 Exception message: Environment F was not found

Но мой тест проходит, чего не должно быть:

Context Find the environment
      [+] Should not find environment 79ms
      [+] Should find environment 147ms

Вроде тест вообще не работает даже с параметром -Be. Тест все еще проходит.

$warning  | Should -Be 'randomrandom'

person pandemic    schedule 27.07.2018    source источник


Ответы (1)


Я не уверен, почему ваш тест проходит успешно, и это очень странно. Но я думаю, что часть вашей проблемы может заключаться в том, что вы выполняете свою команду в блоке сценария, и поэтому переменная предупреждения заполняется / доступна только в рамках этого блока сценария.

Кроме того, как правило, я также стараюсь выполнять свое выполнение за пределами It, а затем использую только блок it для утверждения.

Поэтому я предлагаю вам попробовать это:

Add-Patchgroup -ComputerName $serversHash.serverWithNotExistingEnvironment -WarningVariable warning -WarningAction SilentlyContinue

It 'Should not find environment' {
    $warning  | Should -BeLike '*55555*'
}

Обратите внимание, что я также снял скобки вокруг строки, которую вы утверждаете как $warning, поскольку я считаю их избыточными.

person Mark Wragg    schedule 27.07.2018