The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::Mojo::WithRoles - Use Test::Mojo roles cleanly and safely

SYNOPSIS

  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;

DESCRIPTION

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.

IMPORTING

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

SEE ALSO

Test::Mojo
Mojolicious
Role::Tiny

SOURCE REPOSITORY

http://github.com/jberger/Test-Mojo-WithRoles

AUTHOR

Joel Berger, <joel.a.berger@gmail.com>

COPYRIGHT AND LICENSE

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.