在Perl 5中,可以轻松模拟在特定时间戳运行脚本的情况:
BEGIN {
*CORE::GLOBAL::time = sub () { $::time_mock // CORE::time };
}
use Test;
$::time_mock = 1545667200;
ok is-xmas, 'yay!';
$::time_mock = undef; # back to current time
这适用于全局 - 每个软件包、每个方法、使用 time() 的所有内容都将看到 1545667200 时间戳。对于测试时间敏感逻辑非常方便。
在 Perl 6 中是否有一种复制这种行为的方法?