[英]Pass Variables to Powershell Pester Tests v5
我的纠缠测试处于最后阶段,但在变量范围界定方面存在问题。 我有很多测试,并且想使用诸如 Global scoping 之类的东西来声明变量,例如$ModuleName
、 $ProjectRoot
以及每个测试中需要的其他类似的东西。
我曾尝试使用New-Variable -Scope Global
和$Global:ModuleName
但这些似乎在 Pester 测试中不可见。
我正在从声明了这些的build.ps1
文件中调用Invoke-Pester
。
有没有人看到任何使用集中定义变量的好方法,而不使用$env:
变量?
我发现使用 $Env: variables 是最好的方法。 感谢 BuildHelpers 模块向我展示了这一点。
这就是我的 Pester 测试开始时的样子:
Describe "Core Module Validation" {
BeforeAll {
$Script:moduleName = $ENV:BHProjectName
$Script:modulePath = $ENV:BHModulePath
Remove-Module -Name $moduleName -Force -ErrorAction SilentlyContinue
$Script:manifestTestResult = Test-ModuleManifest -Path $Env:BHPSModuleManifest
$Script:publicScriptFiles = Get-ChildItem -Path "$modulePath\Public" -Recurse
}
It "should cleanly import Module '$ENV:BHProjectName'" {
{ Import-Module -Name $modulePath -Force } | Should -Not -Throw
}
It "should export one or more functions" {
Import-Module -Name $modulePath -Force
Get-Command -Module $moduleName | Measure-Object | Select-Object -ExpandProperty Count | Should -BeGreaterThan 0
}
It "should have a valid PSD1 Module Manifest" {
{ Test-ModuleManifest -Path $ENV:BHPSModuleManifest } | Should -Not -Throw
}
这些 $Env: 变量在我的 build.ps1 文件中设置,并且仅对 session 是临时的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.