我正在为我的Mojolicious应用程序编写一堆测试,我想使用json_is
断言来检查应用程序返回的输出。问题是该应用程序返回一些绝对URL,如下所示:
http://localhost:56144/foo
...并且TCP端口是随机的,所以我不知道要检查输出的内容。有没有办法找到根应用程序URL?或者可能采用不同的方式来编写测试?
答案 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);