Невозможно пройти тест Пестера из-за ошибки локальной переменной
Мне трудно создать приставку для конкретной функции Powershell с помощью invoke-command и иметь переменную $using в блоке скрипта. Это всегда будет возвращать ошибку всякий раз, когда я запускаю свой тест. Пример функции и тест ниже:
Функция:
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
}
}
Ошибка моего теста вернула бы Использование переменной не может быть получено. Используемая переменная может использоваться только с Invoke-Command.... Я не могу понять эту ошибку, даже если я заставил Get-Computer ничего не возвращать? или мне нужно изменить способ подделки Get-Computer для прохождения теста?
Заранее спасибо
1 ответ
Решение
Я не уверен, что вы можете подражать $using:
сфера с Пестером. Вы можете, однако, использовать предварительно$using:
сфера действия:
Invoke-Command -ScriptBlock {
Param(
[Parameter(Position = 0)]
[String] $Name
)
<# ... #>
} -ArgumentList $Name