首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl Test::MockTime + Time::localtime

Perl Test::MockTime + Time::localtime
EN

Stack Overflow用户
提问于 2012-12-25 16:09:13
回答 1查看 421关注 0票数 1

我正在尝试用Test::MockTime模块替换当前时间。它工作得很好:

代码语言:javascript
复制
use Test::MockTime qw(:all);
use Time::Local;
my $sec  = 0;
my $min  = 0;
my $hour = 14;
my $mday = 1; #1-31
my $mon  = 1; #1-12
my $year = 2013; #1970-...
set_fixed_time(timelocal($sec,$min,$hour,$mday,$mon-1,$year-1900));
print join "\n", localtime;

但是,当我使用Time::localtime时,什么也没有发生:

代码语言:javascript
复制
use Time::localtime;
use Time::Local;
use Test::MockTime qw(:all);

my ($sec,$min,$hour,$mday,$mon,$year)=(0,0,14,1,1,2013);

set_fixed_time(timelocal($sec,$min,$hour,$mday,$mon-1,$year-1900));

my $t=localtime();
my $xmon=$t->mon;
my $xyear=$t->year;
my $xday=$t->mday;
my $xmon_now=$xmon+1;
my $xyear_now=$xyear+1900;

print "$xmon_now $xyear_now\n";

输出将是"12 2012“,当使用Time::localtime时,我如何在测试中更改时间?感谢并为我的英语道歉

更新:

代码语言:javascript
复制
use Time::localtime;
use Test::MockTime qw(:all);

不起作用

代码语言:javascript
复制
use Test::MockTime qw(:all);
use Time::localtime;

运行得很好) perl魔术

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-25 17:30:19

Test::MockTime覆盖localtime,但Time::localtime使用CORE::localtime (localtime的未覆盖版本)。你必须重写Time::localtime的localtime

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14028856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档