Покрытие сценария PowerShell с помощью Pester

Я пытаюсь выполнить модульное тестирование своего файла сценария Powershell с помощью приведенного ниже фрагмента кода, используя Pester.

#code to create a 7z file 
$7zipPath = "C:\Program Files\7-Zip\7z.exe"
Set-Alias 7zip $7zipPath
if (!(Test-Path -Path $7zipPath -PathType Leaf)) {
    throw "7 zip file '$7zipPath' not found"
}
7zip a -mx=9 $jenkinsWorkspacepath\IntegrationZip.7z $jenkinsWorkspacepath\IntegratedScripts

И издевательство над командой Test-Path, как показано ниже

    Mock -CommandName Test-Path –MockWith {
        Return $false  
    }

Но в отчете о покрытии нижняя строка показана как непокрытая .. Что я здесь делаю не так (в насмешливой части)?

**throw "7 zip file '$7zipPath' not found"**

person An Kumar    schedule 18.02.2020    source источник


Ответы (1)


Как выглядит твой тест? Я пробовал следующее, и для вашего кода это сработало:

Mock -CommandName Test-Path -MockWith { return $false }  

It "fails to find executable" {
    { Invoke-SevenZip } | Should -Throw "not found"
}

Примечание. Я заключил ваш код в функцию Invoke-SevenZip.

person boxdog    schedule 18.02.2020
comment
Это, вероятно, ответ. Вам нужен тест, который проверяет результат Throw. Вы передаете блок сценария в тест для -Throw, как показано выше в Boxdog. - person Mark Wragg; 19.02.2020