5

完整的 Mojolicious 应用程序具有routes将转储应用程序路由的命令:

script/my_app.pl routes

如何从测试Lite应用程序脚本中做同样的事情?

use Mojo::Base -strict;
use Test::Mojo;
use Test::More;

use Mojolicious::Lite;

... # Routes defined here

my $t = Test::Mojo->new;

$t->dump_all_routes # What should I do here?
4

1 回答 1

3

应用Mojolicous::Lite程序是一个成熟的 Mojolicious 应用程序,只是语法更方便。

不幸的是,Routes 对象没有记录用于枚举所有路由的 API。因此,您必须自己遍历路由树。该Mojolicious::Command::routes命令的相应源代码相当复杂。或者,您可以->find($name)按名称指定特定路线。

该应用程序可以从一个Test::Mojo对象访问为$test->app. 请注意,该方法的文档包括验证路由的测试:

ok $t->app->routes->find('echo')->is_websocket, 'WebSocket route';

请注意,您必须使用应用程序名称初始化测试对象,或者稍后为其分配应用程序实例,以便通过测试对象访问应用程序。

于 2018-04-26T18:59:17.913 回答