perl - 我在哪里放置用 Storable 卡住的对象,以便将它们用作 Perl 单元测试中的模拟输入?

标签 perl unit-testing storable

我正在编写一个单元测试,我需要模拟一个返回 Class::Std::Storable 的函数目的。没有正常的方法可以使用 Data::Dumper 等序列化这些。相反,我可以这样做:

use Storable;
my $serialized = Storable::freeze($object);
#store to a file, database, or wherever, and retrieve later.
my $clone = Storable::thaw($serialized);

所以在我的单元测试中,我需要模拟函数以返回存储的对象,可能像这样:

{
  local *foo = sub { return Storable::thaw($serialized) };
  is(call_to_something_that_calls_foo('input'), $result_of_operation_on_object);
}

这很清楚。让我痛苦的是如何保留那个序列化的对象。它看起来非常像二进制文件,所以我不能像使用 SQL 那样将它放在 __DATA__ 部分中,用于临时内存中的 sqlite 数据库或可能放入对象的其他一些数据。我可以将它放入文件中并与我的测试一起存储,但这是个好主意吗?

那么我应该把卡住的序列化对象放在哪里呢?


所以谷歌可能会在未来索引这个问题:这实际上是关于 SOAP::WSDL 的。和 Class::Std::Fast::Storable .

最佳答案

  1. 将其放入 t/foo.t.data 并使用 __FILE__ 。 '.data' 作为文件名。

  2. base64-encode 数据并将其放在 __DATA__ 之后。

关于perl - 我在哪里放置用 Storable 卡住的对象,以便将它们用作 Perl 单元测试中的模拟输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936493/

相关文章:

python - 在我的网络服务器上实现实时聊天系统的最佳方式是什么?

java - 无法加载ApplicationContext。无法创建集成测试

perl - 如何使用 Perl Storable,更改哈希值

c# - 如何仅对列表中的一部分项目分配属性?

Perl:将序列化哈希通过管道传递给 fork 进程

haskell - 在可存储和拆箱之间转换

perl - 标志 `pIOK` 是什么意思?

multithreading - Perl 中 ithreads(解释器线程)的用例以及使用或不使用它们的理由?

perl - 如何解析制表符分隔的数据文件并在 Perl 中对提取的数据进行分组?

asp.net-mvc - ASP.NET MVC - 测试 Controller 根据操作方法逻辑返回不同的 View