Доступ к внешней переменной из встроенного в Mock Script Block (Pester)
Притворись, у меня есть функция, как...
function Get-Something {
return Get-DogShit
}
... в моем тестовом сценарии Пестера...
$var = 1
Mock 'Get-Dogshit' { return $var }
it 'should return true' {
Get-Something | should $var
}
Это не работает, но вы видите, что я пытаюсь сделать здесь? Я хочу получить значение из локальной переменной в блок скрипта MOCK. Я хочу избежать жесткого кодирования возвращаемого значения в макете и ожидаемого результата в it-блоке. Есть идеи, как мне этого добиться?
2 ответа
Я не был уверен, будет ли он работать так, как раньше, но он, по-видимому, следует тем же правилам области действия, что и стандартный PowerShell.
Так $script:var = 1
и грубая сила $global:var = 1
если это не так или если вам нужно вызвать его за пределами области действия скрипта.
У меня была эта проблема, и область видимости скрипта не работала, и мне было все равно, использовать глобальную область действия Небольшое исследование показывает, как вы можете использовать замыкания для этого.
$var = 1
Mock 'Get-Dogshit' { return $var }.GetNewClosure()
it 'should return true' {
Get-Something | Should be $var
}