在测试之间共享perl模块状态

标记

我正在使用Test :: More,并且我的助手功能需要一段时间才能运行。我需要在几个测试脚本中使用它。我想保存运行此函数的结果,以便所有脚本都可以访问该状态。对于每个测试,调用函数的结果都不会改变。

我创建了一个像这样的模块:package Helper;

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分钟内没有被最后修改,请重新计算该值。

使用Storable

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS:在多个模块之间共享工厂

来自分类Dev

模块之间的“共享”控制器

来自分类Dev

使用AMD和Backbone在模块之间共享对象(或状态)的干净方法

来自分类Dev

TestNG-测试类之间的共享状态

来自分类Dev

摆脱部分子模块状态

来自分类Dev

Perl:“变量将不会保持共享状态”

来自分类Dev

在Appengine模块之间共享python包

来自分类Dev

在apache模块之间共享数据

来自分类Dev

SBT是否支持自定义常春藤模块状态?

来自分类Dev

git中的可读子模块状态信息

来自分类Dev

在子组件的状态之间共享父状态?

来自分类Dev

ES6:在模块之间共享数据

来自分类Dev

在App Engine模块之间共享实体

来自分类Dev

Git子模块状态-如何显示子模块中的当前分支

来自分类Dev

Python:如何在模块之间共享导入?

来自分类Dev

模块之间共享事件发射器

来自分类Dev

在不同模块之间共享工厂价值

来自分类Dev

通用/动态组件在多个模块之间共享

来自分类Dev

Terraform导入模块状态

来自分类Dev

Vuex-模块状态返回未定义

来自分类Dev

禁用后,模块状态保持运行

来自分类Dev

不更改Vuex存储中的模块状态。Vuex | Vue

来自分类Dev

Git子模块显示新的提交,子模块状态表明什么都没提交

来自分类Dev

了解git子模块状态输出

来自分类Dev

模块之间的MEF共享实例

来自分类Dev

使用AMD和Backbone在模块之间共享对象(或状态)的干净方法

来自分类Dev

使用共享模块(在单独的模块之间)

来自分类Dev

给定标签的 git 子模块状态

来自分类Dev

在两个 XS Perl 模块之间共享 C 函数