Pester Насмешка над сценарием, который меняет вывод

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

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'
    }
}

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


person Developer    schedule 16.08.2016    source источник


Ответы (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
}
person Peter    schedule 18.08.2016
comment
Я пытаюсь использовать ваш ответ для $env:systemdrive. Похоже не работает, при установке в разделе beforeAll. У вас есть больше информации об этом? - person restless1987; 12.06.2017