我正在编写一个单元测试,我需要模拟一个返回 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 .
最佳答案
将其放入
t/foo.t.data
并使用__FILE__ 。 '.data'
作为文件名。base64-encode 数据并将其放在
__DATA__
之后。
关于perl - 我在哪里放置用 Storable 卡住的对象,以便将它们用作 Perl 单元测试中的模拟输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936493/