У меня проблемы с оператором using, который можно увидеть здесь . Этот оператор (в отличие от Import-Module
) необходим для получения фактического определения класса из модуля PowerShell. У меня есть вариант использования для этого, потому что мне нужно само определение класса для модульного тестирования Пестера.
Проблема в том, что я не могу найти способ динамически указать путь к модулю. Я не могу использовать переменные, такие как $PSScriptPath
в пути. Я могу предоставить только абсолютный или относительный путь. Ни один из них действительно не работает для меня.
- Абсолютный путь: Проблема здесь в том, что модульные тесты будут выполняться на разных машинах (серверах сборки). Следовательно, иметь жестко запрограммированный абсолютный путь от компьютера разработчика не представляется возможным.
- Относительный путь: Это также проблематично c, поскольку модульные тесты запускаются из базового каталога, который затем запустите все тестовые файлы рекурсивно. Поэтому мне нужно было бы
Set-Location
указать каталоги c для каждого теста, чтобы относительные пути работали. Чтобы протестировать десятки модулей, это большая нагрузка, которую мне приходится решать, когда я могу просто запустить все свои модульные тесты без этой хлопоты.
Есть ли лучший способ, которым я могу управлять этим ? Общая структура каталогов выглядит следующим образом ...
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 интерактивно в консоли. Есть идеи?