Package Info


Mock Datetime->Now Calls During Tests


Getting the current time sometimes is not very helpful for testing scenarios. Instead, if you could obtain a known value during the runtime of a testcase will make your results predictable.

Why another Date Mocker? I wanted something simple with a very concise usage pattern and a mocked date should only exist and stay constant inside a scope. After leaving the scope the current time should be back. This lead to this tiny module.

This simple module allows faking a given date and time for the runtime of a subsequent code block. By default the 'on' keyword is exported into the namespace of the test file. The date to get mocked must be in a format that is recognized by DateTime::Format::DateParse.

on '2013-01-02 03:04:05', sub { ... };

is basically the same as

    my $now = DateTime::Format::DateParse->parse_datetime(
        '2013-01-02 03:04:05'

    local *DateTime::now = sub { $now->clone };

    ... everything from code block above

A drawback when relying on this module is that you must know that the module you are testing uses 'DateTime->now' to obtain the current time. =cut

License: Artistic-1.0 or GPL-1.0+



Package Version Update ID Released Package Hub Version Platforms Subpackages
0.02-bp155.1.4 info GA Release 2023-05-17 15 SP5
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Test-MockDateTime