Я использую несколько сценариев Powershell с Advanced Installer 15.1, которые я хочу протестировать с помощью Pester. Расширенный установщик предоставляет два командлета для доступа к переменным MSI из сценариев Powershell, AI_GetMsiProperty и AI_SetMsiProperty, которые я хотел бы смоделировать в своих модульных тестах. Проблема в том, что стандартное использование этих командлетов без указания параметров, например.
AI_GetMsiProperty MYPROPERTY
AI_SetMsiProperty MYPROPERTY "Newvalue"
Возможности Pester 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 { ????? }
Любые идеи, как я могу это сделать?