2

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

function Get-Something {
  return Get-DogShit
}

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

$var = 1

Mock 'Get-Dogshit' { return $var }

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

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

4

2 回答 2

1

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

$var = 1

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

it 'should return true' {
  Get-Something | Should be $var
}
于 2018-06-30T22:27:49.350 回答
0

不确定它是否会像以前没有被纠缠一样工作,但显然它遵循与标准 PowerShell相同的范围规则。

因此,如果没有,或者您需要从脚本范围之外调用它,则$script:var = 1使用蛮力。$global:var = 1

于 2018-04-05T20:47:50.497 回答