由于局部变量变量错误,无法通过Pester测试

时间:2018-01-10 14:17:54

标签: unit-testing powershell pester

使用invoke-command并在脚本块上使用$ using变量,我很难为特定的Powershell函数创建一个pester。每当我运行测试时,它总会返回错误。示例功能和测试如下:

功能:

Function Execute-Function {
.
.
.
$Name = "Computer_Name"

$ScriptBlock = {
    Import-Module "Activedirectory"
    Get-Computer -Name $Using:Name
}

Invoke-Command -Session $Session -ScriptBlock $ScriptBlock
}

测试:

Describe 'Execute-Function' {
.
.
.
.
mock Import-Module {} -verifiable

mock Get-Computer {} -verifiable

mock Invoke-Command {
 param($Scriptblock)
 . $Scriptblock
} -verifiable


$result = Execute-Function

it 'should call all verifiable mocks'{
 Assert-verifiablemocks
}
}

我的测试错误将返回无法检索使用变量。 using变量只能用于Invoke-Command .... 我无法理解这个错误,即使我嘲笑Get-Computer什么都不返回?或者我是否需要更改模拟Get-Computer以便我的测试通过?

提前感谢

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以使用Pester模拟$using:范围。但是,您可以使用前$using:范围的处理方式:

Invoke-Command -ScriptBlock {
    Param(
        [Parameter(Position = 0)]
        [String] $Name
    )

    <# ... #>

} -ArgumentList $Name