File: Mocking.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (45 lines) | stat: -rw-r--r-- 1,299 bytes parent folder | download | duplicates (9)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use Test2::Bundle::Extended -target => 'Test2::Workflow';
use Test2::Tools::Spec;

describe mock_spec => sub {
    mock Fake1 => ( add => [ check => sub { 1 } ] );

    before_all  ba => sub { mock Fake2 => ( add => [ check => sub { 2 } ])};
    before_each be => sub { mock Fake3 => ( add => [ check => sub { 3 } ])};

    is( Fake1->check, 1, "mock applies to describe block");

    around_each ae => sub {
        my $inner = shift;
        mock Fake4 => ( add => [check => sub { 4 } ]);
        $inner->();
    };

    tests the_test => sub {
        mock Fake5 => ( add => [check => sub { 5 } ]);

        is( Fake1->check, 1, "mock 1");
        is( Fake2->check, 2, "mock 2");
        is( Fake3->check, 3, "mock 3");
        is( Fake4->check, 4, "mock 4");
        is( Fake5->check, 5, "mock 5");
    };

    describe nested => sub {
        tests inner => sub {
            is( Fake1->check, 1, "mock 1");
            is( Fake2->check, 2, "mock 2");
            is( Fake3->check, 3, "mock 3");
            is( Fake4->check, 4, "mock 4");
            ok(!Fake5->can('check'), "mock 5 did not leak");
        };
    };
};

tests post => sub {
    ok(!"Fake$_"->can('check'), "mock $_ did not leak") for 1 .. 5;
};

ok(!"Fake$_"->can('check'), "mock $_ did not leak") for 1 .. 5;

done_testing;