Hi,
I'm a newbie to Pester so please forgive me if this has been answered already. I want to run multiple unit tests on a PowerShell function, providing a range of mocks to exercise the function. Below is the function and test code I've written. I'd like to mock Get-WASJob multiple times, providinga seperate mock to each unit test.
How do I do this?
Thanks,
John
Function GetWASJob {
param ( [string]$project, [string]$job, [string]$os, [string]$runtype )
$runjob = Get-WASJob -ProjectName $project -JobName $job -ErrorAction Stop
#Check if the WAS job is valid
if ($runjob -and $runjob.JobName) {
WriteToLog "GetWASJob: Returned a valid WAS job" $logfile
}
else {
WriteToLog "GetWASJob: Valid WAS job not returned...Quit" $logfile
break
}
return $runjob
}
Pester code to test the above function:
Describe "GetWASJob" {
Context "Just Testing..." {
Mock Get-WASJob {
$obj = New-MockObject -Type 'Microsoft.Assessments.WAS.PowerShell.WASJob'
$obj | Add-Member -Type NoteProperty -Name 'JobName' -Value 'PesterJob1' -Force
$obj | Add-Member -Type NoteProperty -Name 'Tags' -Value 'PesterTag1' -Force
return $obj
}
$result = GetWASJob -project "Project1" -job "Job1" -os "Windows10" -runtype "Production"
It "Verified that all mocks were called" {
Assert-VerifiableMocks
}
It "Checks that a valid job object was returned" {
$result.JobName | Should Be "PesterJob1"
}
}
}