OK, I think I found a decent solution. I turned the app into an object that I can pass to the the full qualified name of plugin's method.

package TestApp; use Dancer2; use Dancer2::Plugin::Menu; use Data::Dumper qw 'Dumper'; get '/' => sub { return 'hello' }; get '/test' => sub { return 'hi' }; sub new { my $class = __PACKAGE__; return bless {}, $class; } my $app = new(); Dancer2::Plugin::Menu::_do_stuff($app);

On Fri, Nov 9, 2018 at 10:29 AM Steve Dondley <sdondley@gmail.com> wrote:
I'm trying to test the internal methods of a plugin in the context of a running test app. The following doesn't work but should give you an idea of what I want to accomplish:

use Plack::Test;
use HTTP::Request::Common;
{ package TestApp;
  use Dancer2;
  use Dancer2::Plugin::Menu;

  get '/'     => sub { return template 'index' };
  get '/test' => sub {
    template 'index.tt', {
      html => 'hi',
    },
  };
  build_menu;
}

my $test = Plack::Test->create( TestApp->to_app );
my $res;

my $menu = Dancer2::Plugin::Menu->new(app => $test);

# test the return value of plugin method
my $result = $menu->_convert_routes_to_array;

cmp_deeply($result, [ '/', '/test' ], 'returns array of menu paths');

Is there a way to do this?






--
Prometheus Labor Communications, Inc.
http://prometheuslabor.com
413-572-1300

UnionConnect Phone App for Labor Unions
http://unionconnect.com


--
Prometheus Labor Communications, Inc.
http://prometheuslabor.com
413-572-1300

UnionConnect Phone App for Labor Unions
http://unionconnect.com