1Test::Roo::Role(3) User Contributed Perl Documentation Test::Roo::Role(3)
2
3
4
6 Test::Roo::Role - Composable role for Test::Roo
7
9 version 1.004
10
12 A testing role:
13
14 # t/lib/MyTestRole.pm
15 package MyTestRole;
16 use Test::Roo::Role; # loads Moo::Role and Test::More
17
18 requires 'class';
19
20 test 'object creation' => sub {
21 my $self = shift;
22 require_ok( $self->class );
23 my $obj = new_ok( $self->class );
24 };
25
26 1;
27
29 This module defines test behaviors as a Moo::Role.
30
32 Importing Test::Roo::Role also loads Moo::Role (which gives you
33 strictures with fatal warnings and other goodies).
34
35 Importing also loads Test::More. Any import arguments are passed
36 through to Test::More's "import" method.
37
38 Creating and requiring fixtures
39 You can create fixtures with normal Moo syntax. You can even make them
40 lazy if you want and require the composing class to provide the
41 builder:
42
43 has fixture => (
44 is => 'lazy'
45 );
46
47 requires '_build_fixture';
48
49 Because this is a Moo::Role, you can require any method you like, not
50 just builders.
51
52 See Moo::Role and Role::Tiny for everything you can do with roles.
53
54 Setup and teardown
55 You can add method modifiers around the "setup" and "teardown" methods
56 and these will be run before tests begin and after tests finish
57 (respectively).
58
59 before setup => sub { ... };
60
61 after teardown => sub { ... };
62
63 You can also add method modifiers around "each_test", which will be run
64 before and after every individual test. You could use these to prepare
65 or reset a fixture.
66
67 has fixture => ( is => 'lazy, clearer => 1, predicate => 1 );
68
69 after each_test => sub { shift->clear_fixture };
70
71 Roles may also modify "setup", "teardown", and "each_test", so the
72 order that modifiers will be called will depend on when roles are
73 composed. Be careful with "each_test", though, because the global
74 effect may make composition more fragile.
75
76 You can call test functions in modifiers. For example, you could
77 confirm that something has been set up or cleaned up.
78
79 before each_test => sub { ok( ! shift->has_fixture ) };
80
82 Loading Test::Roo::Role exports a single subroutine into the calling
83 package to declare tests.
84
85 test
86 test $label => sub { ... };
87
88 The "test" function adds a subtest. The code reference will be called
89 with the test object as its only argument.
90
91 Tests are run in the order declared, so the order of tests from roles
92 will depend on when they are composed relative to other test
93 declarations.
94
96 David Golden <dagolden@cpan.org>
97
99 This software is Copyright (c) 2013 by David Golden.
100
101 This is free software, licensed under:
102
103 The Apache License, Version 2.0, January 2004
104
105
106
107perl v5.38.0 2023-07-21 Test::Roo::Role(3)