Следующая, кажется, работает нормально:
Test.ps1 - Это просто содержит две функции. Оба имеют те же параметры, но Test-Call
звонки до Mocked-Call
. Мы проверим Mocked-Call
в наших тестах.
Function Test-Call {
param(
$text,
[switch]$switch
)
Mocked-Call $text -switch:$switch
}
Function Mocked-Call {
param(
$text,
[switch]$switch
)
$text
}
Test.Tests.ps1 - Это наш фактический тестовый скрипт. Обратите внимание, что у нас есть две макетные реализации для Mocked-Call
. Первый будет соответствовать, если для параметра switch
установлено значение true. Второй будет соответствовать, когда параметр text
имеет значение четвертогои параметр switch
имеет значение ложной.
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
. "$here\$sut"
Describe "Test-Call" {
It "mocks switch parms" {
Mock Mocked-Call { "mocked" } -parameterFilter { $switch -eq $true }
Mock Mocked-Call { "mocked again" } -parameterFilter { $text -eq "fourth" -and $switch -eq $false }
$first = Test-Call "first"
$first | Should Be "first"
$second = Test-Call "second" -switch
$second | Should Be "mocked"
$third = Test-Call "third" -switch:$true
$third | Should Be "mocked"
$fourth = Test-Call "fourth" -switch:$false
$fourth | Should Be "mocked again"
}
}
Запуск тестов показывает зеленый:
Describing Test-Call
[+] mocks switch parms 17ms
Tests completed in 17ms
Passed: 1 Failed: 0
Вы принимающий реальное сообщение об ошибке? Существуют проблемы с издевательскими вызовами, когда испытуемый объект импортирован как модуль. Обратите внимание на ограничения, обсуждаемые здесь. Https://github.com/pester/Pester/wiki/Mocking-with-Pester – Kieranties