2016-08-16 1 views
0

Привет всем Я написал сценарий для отображения текущей информации о пользователе, я хотел бы написать тестовый пример Pester, который должен высмеивать вывод, также если у меня нет return в функции how я могу написать тест для этого тожеPester Издевательский скрипт, который меняет выходные данные

function Get-CurrentUserInfo 
{ 

    $domain = [Environment]::UserDomainName 
    $user = [Environment]::UserName 
    if (!([string]::IsNullOrEmpty($domain))) { $domain = $domain + '\' } 

    $currentUser = $domain + $user 

    #return $currentUser I have commented out so that it will not return any output 
} 

Вот мой тест, когда есть вернуться

$here = Split-Path -Parent $MyInvocation.MyCommand.Path 
. "$here\Get-CurrentUserInfo.ps1" 
Describe "CurrentUser" { 
    It "CurrentUser Info" { 
     Get-CurrentUserInfo | Should be 'MY-PC\username' 
    } 
} 

который прекрасно работает с моим компьютером, но когда я выполняю то же самое в другом ПК она не будет выполнена так как я могу сделать это уникальным

ответ

1

Вы можете издеваться переменные ENV:

$here = Split-Path -Parent $MyInvocation.MyCommand.Path 
. "$here\Get-CurrentUserInfo.ps1" 
Describe "CurrentUser" { 
    $originaldomain = [Environment]::UserDomainName 
    $originaluser = [Environment]::UserName 

    [Environment]::UserDomainName = "testdomain" 
    [Environment]::UserName = "testuser" 


    It "CurrentUser Info" { 
     Get-CurrentUserInfo | Should be 'testdomain\testuser' 
    } 

    [Environment]::UserDomainName = $originaldomain 
    [Environment]::UserName = $originaluser 
} 
+0

Я пытаюсь использовать свой ответ на '$ ENV: systemdrive'. Похоже, что это не сработает, установив его в разделе 'beforeAll'. У вас есть больше информации об этом? – restless1987