gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:41:03 28 4
gpt4 key购买 nike

我正在编写一个单元测试,我需要模拟一个返回 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com