Hi,
For unknown reasons when I attempt to test this function my terminal calls “Send-myEmail” and waits for user input to fill in parameters. I find this odd because I have it within the Mocks section of my pester test. Its as if running the Pester test is not mocking the “Send-myEmail” command. I have tried many different variations and cannot get this to work.
FYI - “Send-myEmail” takes in all of the regular parameters “Send-Message” would but I made my own function and defaulted many of the parameters for easier use.
Please help!
function Search-RabbitSubString {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true,
ValueFromPipeline = $true)]
[string]$Substring
)
$expected_pattern = 'partitions":\[\]'
Write-Verbose "Searching for $expected_pattern"
$result = [bool] (Select-String -InputObject $substring -Pattern $expected_pattern)
if ($result) {
"Expected pattern in substring was found" | Add-ToRabbitLog
return $true
}
Write-Warning "Partition check failed!"
"Some message" | Add-ToRabbitLog
Send-MyEmail -subject "something" -body "something"
}
Context 'Testing functionality' {
mock Write-Warning -MockWith { return "Warning"}
mock Add-ToRabbitLog -MockWith {}
mock Send-MyEmail -mockwith { return "Success" }
Search-RabbitSubString -Substring "fail"
it 'should fail and send myemail' {
Assert-MockCalled -CommandName Write-Warning -Times 1
Assert-MockCalled -CommandName Add-ToRabbitLog -Times 1
Assert-MockCalled -commandName Send-MyEmail -Times 1
}