Я думаю, что ваша проблема, скорее всего, связана с тем, что вы пытаетесь вызвать сценарий тестирования приставки самостоятельно, а не через команду Invoke-Pester
.
Я думаю, что если вы измените свой вызов на Invoke-Pester -Script ~/projects/Lesspass/Lesspass/src/Password.tests.ps1
ваша ошибка может исчезнуть.
Причина в том, что файлы * .tests.ps1 сами по себе не знают, как настроить всю фоновую сантехнику, необходимую для обработки тестового прогона.Invoke-Pester
выполняет большую настройку перед запуском тестовых файлов, и при вызове тестового сценария напрямую с помощью F5
эта настройка пропускается.
Если вы хотите иметь возможность нажать F5
, чтобы запуститьВ тестовом прогоне многие PowerShellers делают в VSCode создание файла debug_entry.ps1
в локальной системе, и в этом файле помещают команду Invoke-Pester -Script ~/projects/Lesspass/Lesspass/src/Password.tests.ps1
.Затем, когда вы хотите запустить прогон, вы переключаете вкладки в файл debug_entry.ps1
и нажимаете F5
, и ваш скрипт отладки делает правильный вызов для вас.Дополнительным преимуществом является тот факт, что любые точки прерывания отладки, которые вы установили либо в файле тестов, либо в коде, который вы тестируете, также должны соблюдаться.
Я также думаю, что я должен также указать начто в вашем make test
сценарии вы используете Get-ChildItem
для явного получения всех путей к тестовым файлам вручную и передачи их в Invoke-Pester
.Это не обязательно.Invoke-Pester
по умолчанию всегда будет искать либо ваш текущий рабочий каталог, либо любой путь, который вы указали для него рекурсивно, чтобы найти все доступные тестовые файлы.
Например, из вывода Get-Help Invoke-Pester
приведен следующий фрагмент
По умолчанию Invoke-Pester запускает все файлы * .Tests.ps1 в текущем каталоге и все подкаталоги рекурсивно.Его параметры можно использовать для выбора тестов по имени файла, имени теста или тегу.
Этот фрагмент из вывода Get-Help Invoke-Pester -Examples
демонстрирует способность Invoke-Pester
искать подкаталоги данногокаталог, не обязательно текущий рабочий каталог для запуска тестов
-------------------------- ПРИМЕР 11 --------------------------
PS> Invoke-Pester -Script C: \ Tests -Tag UnitTest, Newest -ExcludeTag Bug
Эта команда запускает файлы * .Tests.ps1 в C: \ Tests и его подкаталогах.В этих файлах он запускает только те тесты, в которых есть теги UnitTest или Newest, кроме случаев, когда в тесте также есть тег Bug.
Так что в вашем случае, вероятно, будет проще и чище изменить ваш make
вызов pwsh -Command 'Invoke-Pester -EnableExit
Это предполагает, что ваша система сборки установит текущий рабочий каталог в корневую папку вашего проекта.