Pester InvokeVerifiable 验证特定模拟被调用
Pester InvokeVerifiable verify specific mock was called
我对使用模拟的 v5
纠缠方式有点吃力。谁能给我一个例子,我如何验证特定的模拟是通过 Should -InvokeVerifiable
调用的?还有我如何检查特定模拟是否被调用了 n 次。
我还查看了 Pester 文档 Should InvokeVeriable, but didn't find an answer. Here 我只找到了一个调用所有模拟的示例。
示例:
Describe "Describe " {
BeforeAll {
$localPsSession = New-PSSession -ComputerName "localhost"
# Arrange
Mock New-PSSession { $localPsSession } -Verifiable
Mock Remove-PSSession -Verifiable
# Act -> fire the function we want to test
...
}
It "Verify that Remove-PSSession was called in Act phase" {
# Here I want to check THAT only the Remove-PSSession mock was
# called and NOT the New-PSSession mock.
# Additionally I want to check that Remove-PSSession was called e.g. 3 times
Should -InvokeVerifiable
}
}
您可以使用 Should -Invoke -CommandName <command>
来验证特定模拟与您标记为可验证的所有模拟。然后,您还可以使用 -Times
或 -Exactly
参数来指定您希望 Mock 被调用的次数。
为了让您的代码正常工作,您还需要将 'Act' 部分移到 It
中。下面的示例:
Describe "PSSession Tests" {
BeforeAll {
# Arrange
Mock New-PSSession { } -Verifiable
Mock Remove-PSSession { } -Verifiable
}
It "Verify that New-PSSession was called" {
# Act
$localPsSession = New-PSSession -ComputerName "localhost"
# Assert
Should -Invoke -CommandName New-PSSession -Times 1
}
}
请注意,我更改了测试,因此它是针对 New-PSSession
的,因为这是使用的 cmdlet。
仅供参考,还有 Assert-MockCalled
可以以类似的方式使用来验证是否调用了特定 Mock 以及调用了多少次。 Should
上的新参数取代了它,但 Assert-MockCalled
仍在 Pester v5 中,也可以使用。
我对使用模拟的 v5
纠缠方式有点吃力。谁能给我一个例子,我如何验证特定的模拟是通过 Should -InvokeVerifiable
调用的?还有我如何检查特定模拟是否被调用了 n 次。
我还查看了 Pester 文档 Should InvokeVeriable, but didn't find an answer. Here 我只找到了一个调用所有模拟的示例。
示例:
Describe "Describe " {
BeforeAll {
$localPsSession = New-PSSession -ComputerName "localhost"
# Arrange
Mock New-PSSession { $localPsSession } -Verifiable
Mock Remove-PSSession -Verifiable
# Act -> fire the function we want to test
...
}
It "Verify that Remove-PSSession was called in Act phase" {
# Here I want to check THAT only the Remove-PSSession mock was
# called and NOT the New-PSSession mock.
# Additionally I want to check that Remove-PSSession was called e.g. 3 times
Should -InvokeVerifiable
}
}
您可以使用 Should -Invoke -CommandName <command>
来验证特定模拟与您标记为可验证的所有模拟。然后,您还可以使用 -Times
或 -Exactly
参数来指定您希望 Mock 被调用的次数。
为了让您的代码正常工作,您还需要将 'Act' 部分移到 It
中。下面的示例:
Describe "PSSession Tests" {
BeforeAll {
# Arrange
Mock New-PSSession { } -Verifiable
Mock Remove-PSSession { } -Verifiable
}
It "Verify that New-PSSession was called" {
# Act
$localPsSession = New-PSSession -ComputerName "localhost"
# Assert
Should -Invoke -CommandName New-PSSession -Times 1
}
}
请注意,我更改了测试,因此它是针对 New-PSSession
的,因为这是使用的 cmdlet。
仅供参考,还有 Assert-MockCalled
可以以类似的方式使用来验证是否调用了特定 Mock 以及调用了多少次。 Should
上的新参数取代了它,但 Assert-MockCalled
仍在 Pester v5 中,也可以使用。