Как сбрасывать все радостные маршруты? - PullRequest
0 голосов
/ 26 апреля 2018

Полное приложение 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?

1 Ответ

0 голосов
/ 26 апреля 2018

A Mojolicous::Lite - это полноценное приложение Mojolicious с более удобным синтаксисом.

  • Вы можете использовать /app.pl routes для печати маршрутов в командной строке также для приложений Lite.

  • Вы можете программно получить доступ к маршрутам через объект app->routes, который является Mojolicious::Routes объектом, который содержит отдельный Mojolicious::Routes::Route объекты.

К сожалению, объект Routes не документирует API для перечисления всех маршрутов. Поэтому вам придется самостоятельно обходить дерево маршрутов. Соответствующий исходный код для команды Mojolicious::Command::routes довольно запутан. Кроме того, вы можете ->find($name) конкретные маршруты по имени.

Приложение доступно из Test::Mojo объекта как $test->app. Обратите внимание, что документы для этого метода включают тест, который проверяет маршрутизацию:

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

Обратите внимание, что вы должны инициализировать тестовый объект с именем приложения или назначить ему экземпляр приложения позже, чтобы получить доступ к приложению через тестовый объект.

...