Мне кажется, ваш код работает нормально.Я использовал Write-Host
, чтобы проверить, что было значением $ OutputPath в функции, чтобы увидеть, что для него задан путь TestDrive.Я также использовал Assert-MockCalled
, чтобы убедиться, что ваш макет вызывается:
function foobar {
$OutputPath = Join-Path -Path $PSScriptRoot -ChildPath '..\..\..\Output\'
Write-Host $OutputPath
if (!(test-path $OutputPath) ) {
$null = New-Item -ItemType directory -Path $OutputPath
}
}
Describe "Mock Example" {
$TestLocation = New-Item -Path "TestDrive:\Output\" -ItemType Directory
Mock -CommandName 'Join-Path' -MockWith { $TestLocation } -ParameterFilter {$ChildPath -eq '..\..\..\Output\'}
It 'Should work' {
foobar | should -be $null
Assert-MockCalled Join-Path
}
}
Ваш код возвращает $null
в соответствии с дизайном.