Functions/GlobalMock-A.Tests.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# This script exists to create and mock a global function, then exit. The actual behavior
# that we need to test is covered in GlobalMock-B.Tests.ps1, where we make sure that the
# global function was properly restored in its scope.

$functionName = '01c1a57716fe4005ac1a7bf216f38ad0'

if (Test-Path Function:\$functionName)
{
    Remove-Item Function:\$functionName -Force -ErrorAction Stop
}

function global:01c1a57716fe4005ac1a7bf216f38ad0
{
    return 'Original Function'
}

function script:Testing
{
    return 'Script scope'
}

Describe 'Mocking Global Functions - Part One' {
    Mock $functionName {
        return 'Mocked'
    }

    It 'Mocks the global function' {
        & $functionName | Should Be 'Mocked'
    }
}