NAME
Test::Deep::URI - Easier testing of URIs for Test::Deep
SYNOPSIS
use Test::Deep;
use Test::Deep::URI;
$testing_url = "http://site.com/path?a=1&b=2";
cmp_deeply(
$testing_url,
all(
uri("http://site.com/path?a=1&b=2"),
# or
uri("//site.com/path?a=1&b=2"),
# or
uri("/path?b=2&a=1"),
)
);
cmp_deeply(
$testing_url,
uri_qf("/path", { a => 1, b => ignore() }),
);
DESCRIPTION
Test::Deep::URI provides the functions uri($expected)
and uri_qf($expected, $query_form)
for Test::Deep. Use it in combination with cmp_deeply
to test against partial URIs.
In particular I wrote this because I was tired of stumbling across unit tests that failed because http://site.com/?foo=1&bar=2
didn't match http://site.com/?bar=2&foo=1
. This helper is smart enough to compare query_form parameters separately, while still enforcing the order of values for duplicate parameters.
FUNCTIONS
- uri($expected)
-
Exported by default.
$expected should be a string that can be passed to
URI->new()
. - uri_qf($expected, $query_form)
-
Exported by default.
$expected should be a string that can be passed to
URI->new()
.$query_form should be whatever structure you want to check the query form against.
ERRATA
I've mostly been using this with URLs, but it's built around URI and should work with all types. Let me know if something doesn't work.
AUTHOR
Nigel Gregoire <nigelgregoire@gmail.com>
COPYRIGHT
Copyright 2016 - Nigel Gregoire
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.