使用Test :: Mojo测试URL生成

时间:2014-04-22 17:27:35

标签: perl testing mojolicious

我正在为我的Mojolicious应用程序编写一堆测试,我想使用json_is断言来检查应用程序返回的输出。问题是该应用程序返回一些绝对URL,如下所示:

http://localhost:56144/foo

...并且TCP端口是随机的,所以我不知道要检查输出的内容。有没有办法找到根应用程序URL?或者可能采用不同的方式来编写测试?

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你可以检查你的随机网址:

use Test::More;
use Test::Mojo;
use Mojo::URL;

my $t = Test::Mojo->new('MyApp');

$t->post_ok('/search.json')->status_is(200);
# suppose that result something like this {"url":"http://random_domain.ru:1234/foo/bar"}
my $params = $t->tx->res->json;
my $url = Mojo::URL->new($params->{url});
is($url->path, '/foo/bar', 'test url path');
like($url->port, qr/^\d+$/, 'test port');
is($url->scheme, 'http', 'test scheme');

答案 1 :(得分:0)

经过一些挖掘,我发现我可以从用户代理中提取服务器URL:

my $t = Test::Mojo->new('MyAppName');
diag $t->ua->server->url; # http://localhost:59475/

答案 2 :(得分:0)

只是为了进一步混淆,如果你是应用程序中的用户代理,你会发现应用程序的用户代理与Test :: Mojo的用户代理分开:

   my $t = Test::Mojo->new('MyApp');
   isnt($t->ua->server->url, $t->app->ua->server->url);