Test::Mojo::WithRoles - Use Test::Mojo roles cleanly and safely
package Test::Mojo::Role::MyRole; use Role::Tiny; sub is_awesome { my ($t, ...) = @_; # do some test } --- # myapp.t use Test::More; use Test::Mojo::WithRoles 'MyRole'; my $t = Test::Mojo::WithRoles->new('MyApp'); $t->get_ok(...) ->is_awesome(...); done_testing;
Test::Mojo::WithRoles builds composite subclasses of Test::Mojo based on a lexically specified set of roles. This is easy to use and plays nicely with others.
Of course this is all just sugar for the mechanisms provided by Role::Tiny.
{ use Test::Mojo::WithRoles qw/MyRole +Test::MyRole/; my $t = Test::Mojo::WithRoles->new('MyApp'); $t->does('Test::Mojo::Role::MyRole'); # true $t->does('Test::MyRole'); # true } my $t = Test::Mojo::WithRoles->new; $t->does('Test::Mojo::Role::MyRole'); # false
Pass a list of roles when you import Test::Mojo::WithRoles. Those roles will be used to construct a subclass of Test::Mojo with those roles when new is called within that lexical scope. After leaving that lexical scope, the roles specified are no longer in effect when constructing a new object.
new
Roles specified without a leading + sign are assumed to be in the Test::Mojo::Role namespace. Roles specified with a leading + sign are used literally as the fully qualified package name.
+
Test::Mojo::Role
http://github.com/jberger/Test-Mojo-WithRoles
Joel Berger, <joel.a.berger@gmail.com>
Copyright (C) 2015 by Joel Berger
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Test::Mojo::WithRoles, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Test::Mojo::WithRoles
CPAN shell
perl -MCPAN -e shell install Test::Mojo::WithRoles
For more information on module installation, please visit the detailed CPAN module installation guide.