The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::Approvals - Capture human intelligence in your tests

VERSION

This documentation refers to Test::Approvals version v0.0.5

SYNOPSIS

    use Test::Approvals qw(use_reporter verify_ok);

    use_reporter('Test::Approvals::Reporters::DiffReporter');
    verify_ok 'Hello', 'Hello Test';

DESCRIPTION

The Test::Approvals modules provides the top level interface to ApprovalTestss for Perl. You can use ApprovalTests to verify objects that require more than a simple assert, including long strings, large arrays, and complex hash structures and objects. Perl already has great modules that overlap with ApprovalTests, but Test::Approvals really shines when you take advantage of reporters to provide different views into failing tests. Sometimes printing to STDOUT just isn't enough.

SUBROUTINES/METHODS

namer

    my $namer = namer();

Gets the currently configured Test::Approvals::Namers:: instance.

reporter

    my $reporter = reporter();

Gets the currently configured Test::Approvals::Reporters:: instance.

use_name

    my $namer = use_name('My Test Name');

Construct a namer for the specified name, configure it as the current instance, and return the instance.

use_name_in

    my $namer = use_name_in('My Test Name', 'C:\tests\approvals\');

Like 'use_name', but names will be generated in the specified folder.

use_reporter

    my $reporter = use_reporter('Test::Approvals::Reporters::DiffReporter');

Construct a reporter of the specified type, configure it as the current instance, and return the instance.

use_reporter_instance

    my $reporter = Test::Approvals::Reporters::DiffReporter->new();
    my $ref = use_reporter_instance($reporter);

Like 'use_reporter', but use the provided instance instead of constructing a new instance.

verify

    my $ok = verify('Hello');
    ok $ok, 'My Test';

Construct a writer for the specified data and use it (along with the current namer and reporter instances) to verify against the approved data. Returns a value indicating whether the data matched. The reporter is launched when appropriate.

You can pass anything to verify that Perl can easily stringify in a scalar context. So, passing an array, a hash, or raw reference to verify is not going to produce useful results. In these cases, take advantage of verify_dump.

verify_ok

    use_name('Hello Test');
    verify_ok('Hello');

Like 'verify', but also automatically call 'ok' with the test name provided by the current namer instance. Or you can pass the name explicitly for a more traditional Test::More experience:

    verify_ok 'Hello', 'Hello Test';

verify_dump

    use_name('Person Test');
    my %person = ( First => 'Fred', Last => 'Flintrock' );
    verify_dump \%person;

Like 'verify_ok', but will call Data::Dumper::Dumper on the reference for you. Because hash keys are not ordered, and therefore not guaranteed to be stable across runs, this method will enable key sorting inside Data::Dumper using $Data::Dumper::Sortkeys = 1. Before returning, it restores Sortkeys to it's previous value.

DIAGNOSTICS

None at this time.

CONFIGURATION AND ENVIRONMENT

None.

DEPENDENCIES

        Exporter
        Data::Dumper
        Test::Builder
        version

INCOMPATIBILITIES

None known.

BUGS AND LIMITATIONS

Windows-only. Linux/OSX/other support will be added when time and access to those platforms permit.

Perl 5.14 or greater.

AUTHOR

Jim Counts - @jamesrcounts

LICENSE AND COPYRIGHT

Copyright (C) 2013 Jim Counts

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    L<http://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.