我正在尝试为我的 Azure 自动化运行手册编写 Pester 测试。Runbook 脚本使用Get-AutomationVariable
cmdlet,我试图通过以下方式模拟它:
mock 'Get-AutomationVariable' {return "localhost:44300"} -ParameterFilter { $name -eq "host"}
导致错误
CommandNotFoundException:术语“Get-AutomationVariable”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
该-ModuleName
参数的使用似乎不合适,因为我是从脚本而不是模块调用该方法。尝试提供存根模块会导致抛出相同的错误。
. "$here\$sut" "CN=teset, OU=Test" "CN=SubCA02, OU=Test"
Get-Module -Name RunbookMock | Remove-Module
New-Module -Name RunbookMock -ScriptBlock {
function Get-AutomationVariable {
[CmdLetBinding()]
param(
[string]$Name
)
""
}
Export-ModuleMember Get-AutomationVariable
} | Import-Module -Force
describe 'Pin-Certificate' {
it 'should add an entry to the pinned certificate list'{
mock 'Get-AutomationVariable' { return "sastoken"} -ParameterFilter { $Name -eq "StorageSasToken"} -
mock 'Get-AutomationVariable' {return "localhost:44300"} -ParameterFilter { $name -eq "host"}
}
}