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.
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.
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.