Пестер: Как получить доступ к переменной BeforeEach в области видимости модуля? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь провести модульное тестирование модуля 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, из макетированной функции в модуле? Кажется, это проблема области действия, но я не уверен, как ее решить.

Примечание: вот несколько ссылок, на которые я смотрел, но я не уверен, как их использовать (отсутствие примеров) или могут ли они помочь здесь:

...