繁体   English   中英

将变量传递给 Powershell 纠缠测试 v5

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM