У меня есть файл PowerShell .ps1, который содержит функции в верхней части скрипта, за которыми следуют различные команды, вызывающие эти функции. Я использую Pester для тестирования моего файла сценария.Макет функции в скрипте ps1
Как мне высмеять функцию, которая находится в моем сценарии PowerShell .ps1?
Я пробовал издеваться над функцией, но получил сообщение об ошибке «Не удалось найти команду».
Я также попытался добавить пустую «фиктивную» функцию в описываемом блоке. Это не дает мне вышеуказанную ошибку, но она не издевается над функцией внутри скрипта правильно.
У меня есть два файла. Один для проведения тестов и другой, который содержит функции и вызовы функций. Ниже приведены два примера:
File1.ps1
Function Backup-Directory([switch]$IsError)
{
If($IsError)
{
Write-Error "Error"
Exit 1
}
}
Backup-Directory $true
File2.Tests.ps1
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path) -replace '\\test', '\main'
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
$productionFile = "$here\$sut"
Describe "File1" {
Context "When the Back-Directory outputs an error." {
# Arrange
Mock Back-Directory { }
Mock Write-Error
# Act
& $productionFile
$hasSucceeded = $?
# Assert
It "Calls Backup-Directory" {
Assert-MockCalled Backup-Directory -Exactly 1 -ParameterFilter {
$IsError -eq $true
}
}
It "Writes error message." {
Assert-MockCalled Write-Error -Exactly 1 -ParameterFilter {
$Message -eq "Error"
}
}
It "Exits with an error." {
$hasSucceeded | Should be $false
}
}
}
Нам потребуется дополнительная информация, по крайней мере, и, возможно, чтобы увидеть код. Функция, которую вы хотите высмеять, находится в том же файле, который вы используете для тестирования? – EBGreen