在测试之间共享perl模块状态
我使用的是Test::More,我有一个helper函数需要运行一段时间。我需要在几个测试脚本中使用它。我想保存运行此函数的结果,以便所有脚本都可以访问状态。每次测试调用函数的结果都不会改变 我创建了如下模块: 包裹助理在测试之间共享perl模块状态,perl,module,global,state,Perl,Module,Global,State,我使用的是Test::More,我有一个helper函数需要运行一段时间。我需要在几个测试脚本中使用它。我想保存运行此函数的结果,以便所有脚本都可以访问状态。每次测试调用函数的结果都不会改变 我创建了如下模块: 包裹助理 our $_global_state = under; sub helper { if ( !defined( $_global_state)) { #insert magic here to set the _global_state
our $_global_state = under;
sub helper {
if ( !defined( $_global_state)) {
#insert magic here to set the _global_state
print STDERR "Inside magic\n";
}
return $_global_state;
}
return 1;
但是,如果我从多个测试脚本调用这个函数,它每次都会重复“魔术”。如果可能的话,我会尽量避免这种情况。可以通过以下方法解决:
- 将计算的状态保存到文件中
- 如果文件在10分钟内没有最后修改,请重新计算该值
使用严格;
使用警告;
使用可储存材料;
我们的$state_文件='global.state';
助手{
#检查文件是否在10分钟内最后一次修改。
如果(-e$state_文件&&M$state_文件<1/24/6){
返回检索($state_file);
}
#在此处插入魔术设置_全局_状态
我的$global_state={'a'..'d'};
存储$global\u state、$state\u文件;
返回$global_state;
}
使用数据::转储;
dd-helper();
1.
use strict;
use warnings;
use Storable;
our $state_file = 'global.state';
sub helper {
# Check to see if file last modified in 10 minutes.
if (-e $state_file && -M $state_file < 1/24/6) {
return retrieve($state_file);
}
#insert magic here to set the _global_state
my $global_state = {'a'..'d'};
store $global_state, $state_file;
return $global_state;
}
use Data::Dump;
dd helper();
1;