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);
}
それはかなり明らかです。私に苦痛を与えているのは、そのシリアル化されたオブジェクトを保持する方法です。バイナリのように見えるので__DATA__
、一時的なインメモリ sqlite db やオブジェクトに入れられる可能性のあるその他のデータの SQL のようにセクションに入れることはできません。それをファイルに入れてテストで保存することもできますが、それは良い考えですか?
では、その凍結されたシリアル化されたオブジェクトをどこに置くのでしょうか?
したがって、Google は将来のためにこの質問をインデックス化する可能性があります。これは、実際にはSOAP::WSDLとClass::Std::Fast::Storable に関するものです。