Доступ к внешней переменной из встроенного в 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
}
Другие вопросы по тегам