2016-12-22 3 views
1

Если у меня есть эта функция:Как мне высмеять Read-Host в тесте Pester?

Function Test-Foo { 

    $filePath = Read-Host "Tell me a file path" 
} 

Как я дразнят Read-Host, чтобы вернуть то, что я хочу? например Я хочу сделать что-то вроде этого (который не работает):

Describe "Test-Foo" { 
    Context "When something" { 
     Mock Read-Host {return "c:\example"} 

     $result = Test-Foo 

     It "Returns correct result" { 
      $result | Should Be "c:\example" 
     } 
    } 
} 

ответ

5

Такое поведение является правильным:

вы должны изменить вы код

Import-Module -Name "c:\LocationOfModules\Pester" 

Function Test-Foo { 
    $filePath = Read-Host "Tell me a file path" 
    $filePath 
} 

Describe "Test-Foo" { 
    Context "When something" { 
     Mock Read-Host {return "c:\example"} 

     $result = Test-Foo 

     It "Returns correct result" { # should work 
      $result | Should Be "c:\example" 
     } 
     It "Returns correct result" { # should not work 
      $result | Should Be "SomeThingWrong" 
     } 
    } 
} 
+0

Когда я запускаю его это все еще висит на линии Read-Host? 'PS D: \ Temp \ Scrap> взывать-приставать Описание Тест-Foo Контекст Когда что-то Скажите мне путь к файлу:' –

+0

Я изменил пример, Вы можете, пожалуйста, попробуйте coppy это на новый ps1 и тест, если у вас есть желаемый результат? –

+0

Это делает! В моем тесте у меня есть функция, которую я хочу протестировать в отдельном файле psm1. Я должен импортировать его неправильно. Спасибо большое! –