Исключение, которое вы видите, исходит не от вашей функции, а от использования Remove-Item
, которое выдает ошибку, пытаясь удалить ошибочный путь (который также не существует).Вы должны просто удалить его, так как вы никогда не ожидаете, что элемент все равно будет создан.
Или, альтернативно (как упомянуто в комментариях), используйте TestDrive: который вам тогда не нужно беспокоиться об очистке (кажется, дляпуть, который нужно поддерживать, вы должны использовать $Testdrive
).
It 'returns true for a path not supported by PowerShell Test-Path' {
$absPath = "$env:TEMP\temp-file[weird-chars.txt"
[System.IO.File]::WriteAllText($absPath, 'Hello world')
$result = Test-FSPath $absPath
$result | Should -Be $true
}
В качестве отступления я обычно склонен делать вещи типа выполнения вне It
и просто проверять результат внутри.Когда я начал делать это для вашего кода, он показал, что тест проходит успешно, поскольку ошибка переместилась в блок Context
.Вот что я имею в виду (также в этом примере используется TestDrive: через переменную $testdrive
):
Describe 'Test' {
Context Test-FSPath {
$absPath = "$testdrive\temp-file[weird-chars.txt"
[System.IO.File]::WriteAllText($absPath, 'Hello world')
$result = Test-FSPath $absPath
It 'returns true for a path not supported by PowerShell Test-Path' {
$result | Should -Be $true
}
}
}