У меня проблемы с оператором using, который можно увидеть здесь. Этот оператор (в отличие от Import-Module
) требуется для получения фактического определения класса из модуля PowerShell. У меня есть вариант использования для этого, потому что мне нужно само определение класса для модульного тестирования Pester.
Проблема в том, что я не могу найти способ динамически указать путь к модулю. Я не могу использовать в пути такие переменные, как $PSScriptPath
. Я могу указать только абсолютный или относительный путь. Ни то, ни другое не работает для меня.
- Абсолютный путь. Проблема в том, что модульные тесты будут запускаться на разных машинах (серверах сборки). Следовательно, жестко запрограммированный абсолютный путь от машины разработчика не вариант.
- Относительный путь:. Это также проблематично, поскольку модульные тесты запускаются из базового каталога, который затем рекурсивно запускает все тестовые файлы. Поэтому мне пришлось бы
Set-Location
перейти в определенные каталоги для каждого теста, чтобы относительные пути функционировали. Чтобы протестировать десятки модулей, придется справиться с большими накладными расходами, когда я смогу просто запустить все свои модульные тесты без этих хлопот.
Есть ли лучший способ справиться с этим? Общая структура каталогов такая ...
src
project1
someModule1
someModule1.psm1
someModule2
someModule2.psm1
someModule3
someModule3.psm1
tests
someModule1.Tests.ps1
someModule2.Tests.ps1
someModule3.Tests.ps1
Из каталога src
запустите Invoke-Pester -Script .
, чтобы запустить все файлы модульного теста. Файлы «Тесты» должны иметь возможность импортировать классы из соответствующих модулей. Что еще хуже, я не получаю никаких ошибок, если оператор using
не находит путь к модулю, если я не запустил оператор using в интерактивном режиме в консоли. Любые идеи?