从内置模拟脚本块访问外部变量(Pester)

时间:2018-04-05 20:30:01

标签: powershell pester

假装我有像...这样的功能。

function Get-Something {
  return Get-DogShit
}

...在我的Pester测试脚本中......

$var = 1

Mock 'Get-Dogshit' { return $var }

it 'should return true' {
  Get-Something | should $var
}

这不起作用,但你看到我在这里想做什么?我想从局部变量获取值到MOCK脚本块。我想避免对mock中的返回值和it-block中的预期结果进行硬编码。关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

我自己遇到了这个问题,脚本作用域不起作用,我也不在乎使用全局作用域。一些研究显示了如何使用闭包。

$var = 1

Mock 'Get-Dogshit' { return $var }.GetNewClosure()

it 'should return true' {
  Get-Something | Should be $var
}

答案 1 :(得分:0)

不确定它是否能够像以前那样与pester混淆,但显然它跟标准PowerShell一样scope rules

所以$script:var = 1和蛮力$global:var = 1如果它没有,或者你需要从脚本范围之外调用它。