2015-11-21 5 views
2

Я убираю свои мохолические тесты и даю им правильные описательные имена. В качестве примера:Предоставление описательных тестовых имен для Mojolicious тестов?

$t->get_ok('/api/ninjablock', 'Run a GET against /api/ninjablock with no credentials') 
    ->status_is(403, ' and it has correctly returned a 403'); 

Тест Результат выглядит следующим образом, однако:

ok 1 - GET /api/ninjablock 
ok 2 - and it has correctly returned a 403 

Я предполагаю, что я что-то очевидное отсутствует, но как я могу сделать, что первый тест показать нечто иное, чем GET /api/ninjablock как имя?

+0

get_ok: из документов я не думаю, что это должно работать, оно говорит «те же аргументы, что и« get »в Mojo :: UserAgent», не упоминается дополнительный параметр для именования теста. get() принимает дополнительные параметры, так что это может быть причиной. – bytepusher

ответ

4

Согласно Test::Mojo source code, get_ok() принимает только три параметра: ($self, $method, $url). Следовательно, с самим Test::Mojo вы не можете назначить описание для своего теста так, как оно есть в настоящее время.

Это немного жаль, что вы не можете поставить описания, но вы можете обернуть любой тест, который вы любите в Test::More «s ok(), is() и т.д. подпрограммы.

Не бойтесь поднимать его на более высокий уровень. Если вам необходимо проверить, что несколько URL-адресов возврата 403, когда вы не предоставите учетные данные:

ok($t->get_ok($_)->status_is(403) => "$_ no creds : 403") for @urls; 

Обратите внимание, что это приведет к дополнительной линии выхода теста (или дополнительному количество теста), но большая часть времени вы все равно должны работать в жгуте, так что будут отображаться только те тесты, которые не пройдут. Вы можете рассмотреть Test::Group, если вам нужна дополнительная организация.

+0

Ах, идеальный. Большое спасибо! – VirtualWolf

Смежные вопросы