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

NAME

Test::Time::At - Do a test code, specifying the time

SYNOPSIS

    use Test::Time time => 1;
    use Test::Time::At;
    use Test::More;

    my $now = time; # $now is equal to 1 (by Test::Time)

    do_at {
        my $now_in_this_scope = time; # $now_in_this_scope is equal to 1000
        sleep 100; # returns immediately
        my $then_in_this_scope = time; # $then_in_this_scope is equal to 1100
    } 1000;

    my $then = time; # After do_at, time is equal to 1 again

DESCRIPTION

Test::Time::At supports to specify the time to do a test code. You have to use Test::Time with this module.

METHODS

do_at(&$)

Do a code at specifying epoch time. You can specify the instance which has the method named 'epoch'.

    # You can specify epoch time
    do_at {
        my $now = time
    } 1000;

    # You can also specify the instance, for example Time::Piece and DateTime
    do_at {
        my $now = time
    } DateTime->new(year => 2015, month => 8, day => 10);

    do_at {
        my $now = time
    } Time::Piece->strptime('2015-08-10T06:29:10', '%Y-%m-%dT%H:%M:%S');

sub_at(&$)

sub_at is useful if you want to specify the time for subtest. this prevents the nest from becoming deeper.

    subtest 'I want to this subtest on Aug. 10, 2015' => sub_at {
        my $now = time;
    } DateTime->new(year => 2015, month => 8, day => 10);

SEE ALSO

Test::Time

LICENSE

Copyright (C) shibayu36.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHORS

shibayu36 <shibayu36@gmail.com>

nanto_vi (TOYAMA Nao) <nanto@moon.email.ne.jp>