的功能Assert-VerifiableMocks
不是它的一个子集,Assert-MockCalled
它是一个不相交的集合。您可以验证同时调用了Assert-VerifiableMocks
许多模拟,但如前所述,您无法验证没有调用任何模拟。我在下面有一个示例来更全面地解释测试示例“Get-ValueSum”的这两个差异。
如果您注意到,Assert-verifiableMocks
您可以验证测试是否在单个断言中调用了所有预期的模拟。
断言可验证样本
describe 'Assert-MockCalled vs Assert-VerifiableMocks in Pester' {
function Get-Value1{ 1}
function Get-Value2{ 2}
function Get-Value3{ 3}
# Should never be called by Get-ValueSum
function Get-Value4{ 4}
# Sums Value 1, 2 & 3, but 4 only if $include4 is specified
function Get-ValueSum
{
param([switch] $inclued4 )
if($inclued4)
{
return (Get-Value1) + (Get-Value2) + (Get-Value3) + (Get-Value4)
}
else
{
return (Get-Value1) + (Get-Value2) + (Get-Value3)
}
}
context 'assert verifiable' {
# Mark the first 3 mocks as verifiable
# because they should not be called
mock -CommandName Get-Value1 -MockWith { 2} -Verifiable
mock -CommandName Get-Value2 -MockWith { 3} -Verifiable
mock -CommandName Get-Value3 -MockWith { 4} -Verifiable
# Add this so we can verify it is not called
mock -CommandName Get-Value4 -MockWith { 99}
$result = Get-ValueSum
it 'Should call the 3 expected value calls' {
Assert-VerifiableMock
}
it 'should not call get-value 4' {
Assert-MockCalled -CommandName Get-Value4 -Times 0
}
it 'should have gotten a sum of 9' {
$result | should be 9
}
# add test for #$include4
}
}
断言模拟调用示例
describe 'Assert-MockCalled vs Assert-VerifiableMocks in Pester' {
function Get-Value1{ 1}
function Get-Value2{ 2}
function Get-Value3{ 3}
# Should never be called by Get-ValueSum
function Get-Value4{ 4}
# Sums Value 1, 2 & 3, but 4 only if $include4 is specified
function Get-ValueSum
{
param([switch] $inclued4 )
if($inclued4)
{
return (Get-Value1) + (Get-Value2) + (Get-Value3) + (Get-Value4)
}
else
{
return (Get-Value1) + (Get-Value2) + (Get-Value3)
}
}
context 'assert mock called method' {
# Add all mocks so we can verify
# if they were called or not individually
mock -CommandName Get-Value1 -MockWith { 3}
mock -CommandName Get-Value2 -MockWith { 4}
mock -CommandName Get-Value3 -MockWith { 5}
mock -CommandName Get-Value4 -MockWith { 99}
$result = Get-ValueSum
it 'Should call the 3 expected value calls' {
Assert-MockCalled -CommandName Get-Value1 -Times 1
Assert-MockCalled -CommandName Get-Value2 -Times 1
Assert-MockCalled -CommandName Get-Value3 -Times 1
}
it 'should not call get-value 4' {
Assert-MockCalled -CommandName Get-Value4 -Times 0
}
it 'should have gotten a sum of 12' {
$result | should be 12
}
# add test for #$include4
}
}