package BossClass; ... sub new { ... } sub create { my $obj = $a ? Aclass->new(...) : $b ? Bclass->new(...) : Cclass->new(...); my $res = $obj->do_it(...); ... } #### use Test::More; use Test::Resub qw/ resub /; my $mocker = resub 'Aclass::do_it', sub { }, capture=>1; my $tobj = BossClass->new(...); $tobj->create(); my $args = $mocker->args; # Tests check the args BossClass provided to the chosen constructor # and the do_it method are as expected