Я пытаюсь провести модульное тестирование модуля PowerShell с помощью Pester. Моя проблема в том, что переменные, которые я определяю в BeforeEach
, не доступны в области видимости модуля для фиктивных функций.
Согласно Пестеру:
Любые переменные, которым присвоены значения в блоке BeforeEach, могут использоваться внутри тела блока It.
Вот пример:
# Imports class defs and exported module members
using module TestModule
Describe "ModuleMockExample" {
# Redefine var to be fresh for each It block
BeforeEach {
$freshVariable = 5
}
# Mock some method of the module, which needs access to variable defined in BeforeEach
Mock TestModuleMethod {
$freshVariable++
} -ModuleNname TestModule
# Call some method on a class we got from our imported module, which behind the scenes uses our Mock function
It "should call the mocked function once, incrementing the number" {
# Can I see the var defined in BeforeEach here? Yes.
$test = $freshVariable
[TestClass]$test = [TestClass]::new()
$result = $test.getNumber() # Mocked function gets called within getNumber(), but can't access $freshVariable (it's null)
$result | Should -Be 6
}
}
Я полагаю, поскольку я использую -ModuleNname TestModule
в моей функции Mock, переменная, определенная в BeforeEach
, недоступна. Можно ли каким-либо образом получить доступ к переменной, определенной в BeforeEach, из макетированной функции в модуле? Кажется, это проблема области действия, но я не уверен, как ее решить.
Примечание: вот несколько ссылок, на которые я смотрел, но я не уверен, как их использовать (отсутствие примеров) или могут ли они помочь здесь: