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 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. SEE ALSO Test::Deep Test::Deep::JSON Test::Deep::Filter Test2::Tools::URL