Я использую несколько скриптов Powershell с Advanced Installer 15.1, которые я хочу протестировать с помощью Pester. Advanced Installer предоставляет два командлета для доступа к переменным MSI из сценариев Powershell: AI_GetMsiProperty и AI_SetMsiProperty , которые я хотел бы использовать в своих модульных тестах. Проблема заключается в том, что стандартное использование этих командлетов происходит без указания параметров, например
AI_GetMsiProperty MYPROPERTY
AI_SetMsiProperty MYPROPERTY "Newvalue"
Возможности
Пестера Mocking позволяют использовать параметр ParameterFilter
для возврата нескольких значений нескольким вызовам одного и того же макета на основе именованного параметра :
Mock Get-ChildItem { return @{FullName = "A_File.TXT"} } -ParameterFilter { $Path -and $Path.StartsWith($env:temp\1) }
Mock Get-ChildItem { return @{FullName = "B_File.TXT"} } -ParameterFilter { $Path -and $Path.StartsWith($env:temp\2) }
Mock Get-ChildItem { return @{FullName = "C_File.TXT"} } -ParameterFilter { $Path -and $Path.StartsWith($env:temp\3) }
Однако, поскольку AI_GetMsiProperty не использует именованные параметры, я не уверен, как имитировать множественные вызовы get или set на основе параметров.
Mock AI_GetMsiProperty { return "value1" } -ParameterFilter { ????? }
Mock AI_GetMsiProperty { return "value2" } -ParameterFilter { ????? }
Есть идеи, как мне этого добиться?