The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use lib 'lib', '../lib';

use strict;
use warnings;

use Test::More 'no_plan';

use Test::Builder::Mock::Class ':all';
use Test::More;

# concrete mock class
mock_class 'Net::FTP' => 'Net::FTP::Mock';
my $mock_object1 = Net::FTP::Mock->new;
$mock_object1->mock_tally;

# anonymous mocked class
my $metamock2 = mock_anon_class 'Net::FTP';
my $mock_object2 = $metamock2->new_object;
$mock_object2->mock_tally;

# anonymous class with role applied
my $metamock3 = Test::Builder::Mock::Class->create_mock_anon_class(
    class => 'Net::FTP',
    roles => [ 'My::Handler::Role' ],
);
my $mock_object3 = $metamock3->new_object;
$mock_object3->mock_tally;


package My::Handler::Role;
use Moose::Role;