【发布时间】:2019-07-31 07:15:35
【问题描述】:
我正在为将重新启动 Azure WebApps 的 out 脚本设置单元测试。尝试模拟 Restart-AzureRmWebApp 时,不会调用模拟,有时 WebApp 会实际重新启动。 我正在运行 Pester 4.8.1 和 PowerShell 版本 PSVersion 5.1.17134.858
我尝试使用参数过滤器,添加了 return New-Object Microsoft.Azure.Management.WebSites.Models.Site 的返回
这是我开始之前的代码,我想在重写之前用 Pester 包装代码。
功能
Function Restart-WebApp {
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true)][string]$WebAppName,
[Parameter(Mandatory=$true)][string]$ResourceGroupName
)
#restarting web app
{
Write-Output "Restarting web app: $WebAppName"
$null = Restart-AzureRmWebApp -ResourceGroupName $ResourceGroupName -Name $WebAppName -ErrorAction Stop
Write-Output "Checking status"
}
测试
Describe "Restart Webapps Unit Tests" {
Context "Restart Webapps Unit Test" {
$WebApp = "our-webapp-dev-westus"
$Environment = 'dev'
# Get-ResourceGroup is our internal script to get the Resource Group Name
$rsg = Get-ResourceGroup -Environment $Environment
Mock -CommandName Restart-AzureRmWebApp {} #-ParameterFilter { $ResourceGroupName -eq $rsg -and $Name -eq $WebApp} {}#{ return New-Object Microsoft.Azure.Management.WebSites.Models.Site }
It "should restart Web App" {
Restart-WebApp -WebAppName $WebApp -ResourceGroupName $rsg
Assert-MockCalled -CommandName Restart-AzureRmWebApp
}
}
}
测试结果
Describing Restart Webapps Unit Tests
Context Restart Webapps Unit Test
[-] should restart Web App 327ms
at <ScriptBlock>, : line 20
20: Assert-MockCalled -CommandName Restart-AzureRmWebApp
Expected Restart-AzureRmWebApp to be called at least 1 times but was called 0 times
Tests completed in 472ms
Tests Passed: 0, Failed: 1, Skipped: 0, Pending: 0, Inconclusive: 0
【问题讨论】:
标签: azure powershell unit-testing mocking pester