从 with-in Mock 脚本块访问外部变量(Pester)

Access External Variable from with-in Mock Script Block (Pester)

假装我有一个函数...

function Get-Something {
  return Get-DogShit
}

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

$var = 1

Mock 'Get-Dogshit' { return $var }

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

这行不通,但你看到我在这里想做什么了吗?我想从局部变量中获取值到 MOCK 脚本块中。我想避免硬编码模拟中的 return 值和 it 块中的预期结果。关于如何实现这一点有什么想法吗?

不确定它是否会工作,因为之前没有与 pester 混淆,但显然它遵循与标准 PowerShell 相同的 scope rules

所以 $script:var = 1,brute-force $global:var = 1 如果没有或者如果您需要从脚本范围之外调用它。

我自己也有这个问题,脚本作用域不起作用,我也懒得用全局作用域。一些研究显示了如何为此使用闭包。

$var = 1

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

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