2016-01-14 4 views
-1

У меня есть функция, которая возвращает содержимое конфигурационного файла:тестирование Выход для собственных функций

function Get-VA.Settings { 
<# 
.SYNOPSIS 
Fetches settings from a XML file 
.DESCRIPTION 
Fetches settings from a XML file and outputs a XML Object 
.EXAMPLE 
Get-VA.Settings -path <path-to-config-file> -Rollback <path-to-rollback-file> 
#> 
    Param (
    [Parameter(Mandatory=$true,Position=0)] 
    [string]$path, 
    [Parameter(Mandatory=$true,Position=1)] 
    [string]$Rollback 
) 
    try { 
    [xml]$config = Get-Content -Path $path 
    Write-Output -InputObject $config 
    } catch { 
    Write-VA.EventLog -Message ("Could not load Configuration File: `r`n" + $Error) -Id 11 -type Error 
    Invoke-VA.Rollback -Path $($Rollback) 
    } 
} 

Теперь у меня есть тест в Pester который просто проверить, если Funtion фактически возвращает что-то:

Import-Module ($PSScriptRoot + "\utility.psm1") 
Describe "Settings Module" { 
    InModuleScope utility { 
    Context "Get-VA.Settings" { 
     It "should have Help and Examples" { 
     $helpinfo = Get-Help Get-VA.Settings 
     $helpinfo.examples | should not BeNullOrEmpty # should have examples 
     $helpinfo.details | should not BeNullOrEmpty # should have Details 
     $helpinfo.description | Should not BeNullOrEmpty # Should have a Description for the Function 
     } 

     It "should fail safely on read Error" { 
     Mock Get-Content {throw} 
     Mock Write-VA.EventLog { } 
     Mock Invoke-VA.Rollback { } 
     Get-VA.Settings -path "1" -Rollback "1" 
     Assert-MockCalled Invoke-VA.Rollback -Times 1 
     } 

     It "should return a value" { 
     Set-Content -Value "<xml><foo>bar</foo></xml>" -Path "settings-test.ps1" 
     Get-VA.Settings -path .\settings-test.ps1 -Rollback "1" | should not BeNullOrEmpty 
     Remove-Item "settings-test.ps1" 
     } 
    } 
    } 
} 

Теперь, что бы я ни делал для вывода настроек конфигурации, я, похоже, не могу пройти тест с Pester, даже если он работает нормально.

[-] должна возвращать значение 18мс
Ожидаемое:. Значение не может быть пустым
Get-ConfigSettings -path \ Настройки-Test.ps1 -Rollback "1" | не должен BeNullOrEmpty

Я что-то не хватает здесь? Как правильно обрабатывать вывод функции?

+0

У ваших «Get-ConfigSettings» есть два обязательных параметра, но y дает только один тест. – PetSerAl

+0

Я не могу воспроизвести ошибку с текущим кодом. Какая ошибка Pester вам показать? – PetSerAl

+2

Вы пытались отрезать функцию и протестировать в отдельном файле и протестировать ее в новом чистом сеансе PowerShell? Можете ли вы предоставить [mcve] необходимые для воспроизведения ошибки? – PetSerAl

ответ

2
Get-Help Context 

Любой Mocks, определенный внутри контекста удаляется в конце рамки контекста,

С It "should fail safely on read Error" (1) и It "should return a value" (2) принадлежит к тому же Context блоку, Mock Get-Content {throw} определены в (1) все еще имеют эффект в (2), так что Get-VA.Settings не вызывает командлет Get-Content, но вместо этого называет mock.

+0

Ну, это был огромный надзор. Спасибо за это. – Fairy

Смежные вопросы