NAME Dist::Zilla::Util::Test::KENTNL - KENTNL's DZil plugin testing tool. VERSION version 0.01015823 METHODS test_config This is pretty much why this module exists. Its a little perverse, but makes testing WAY easier. my $plugin = test_config({ dist_root => 'corpus/dist/DZT', ini => [ 'GatherDir', [ 'Prereqs' => { 'Test::Simple' => '0.88' } ], ], post_build_callback => sub { my $config = shift; # Handy place to put post-construction test code. die $config->{error} if $config->{error}; }, find_plugin => 'SomePluginName' }); Additionally, you can add this section callback => { method => 'metadata', args => [], code => sub { my $data = shift; print "Errors ( if any ) $data->{error} "; dump $data->{response}; # response from ->metadata $data->{instance}->doMorestuffbyhand(); # ok( .... 'good place for a test!' ) }, } Generally, I find it easier to do 1-off function wrappers, i.e.: sub make_plugin { my @args = @_; return test_config({ dist_root => 'corpus/dist/DZT', ini => [ 'GatherDir', [ 'Prereqs' => {'Test::Simple' => '0.88' } ], [ 'FakePlugin' => {@args } ], ], post_build_callback => sub { my $config = shift; die $config->{error} if $config->{error}; }, find_plugin => 'FakePlugin', }); } Which lets us do ok( make_plugin( inherit_version => 1 )->inherit_version , 'inherit_verion = 1 propagates' ); parameters my $foo = test_config({ dist_root => 'Some/path' # optional, strongly recommended. ini => [ # optional, strongly recommended. 'BasicPlugin', [ 'AdvancedPlugin' => { %pluginargs }], ], build => 0/1 # works fine as 0, 1 tells it to call the ->build() method. post_build_callback => sub { my ( $conf ) = shift; $conf->{error} # any errors that occured during construction/build $conf->{instance} # the constructed instance # this is called immediately after construction, do what you will with this. # mostly for convenience }, find_plugin => 'Some::Plugin::Name', # makes test_config find and return the plugin that matched that name instead of # the config instance callback => { # overrides the return value of find_plugin if it is called method => 'method_to_call', args => [qw( hello world )], code => sub { my ($conf) = shift; $conf->{plugin} # the constructed plugin instance $conf->{error} # any errors discovered when calling ->method( args ) $conf->{instance} # the zilla instance $conf->{response} # the return value of ->method( args ) # mostly just another convenience of declarative nature. return someValueHere # this value will be returned by test_config } }, }); AUTHOR Kent Fredric COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Kent Fredric . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.