NAME

Test::Deep::URI - Easier testing of URIs for Test::Deep

Build Status

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

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.

SEE ALSO