TMTOWTDI,我当然希望如此--每当我遇到多维哈希(有时是4-5层深)时,我已经在我的最后几个项目中使用了Test::Deep。现在,我通常的做法就是输入这些散列并填充我期望的数据,然后运行cmp_deeply(actual, expected, msg)。有人对像这样的深度嵌套数据进行单元测试有什么建议吗?-我目前的方法似乎效率非常低,有时每个数据结构的单元测试需要一个多小时。
发布于 2014-06-13 00:31:48
如果您只是想测试一下这个结构,可以试试Data::Validate::Struct。
您需要定义一个参考数据结构来与实际数据结构进行比较,该数据结构可以是任何级别的深度,可以是嵌套哈希/数组的任何组合。
这里最重要的是,这个模块验证的是数据类型,而不是实际的数据。
例如:
my $exp = {
'body' => {
'results' => [
{
'template' => [
{
'origin' => 'word',
'name' => 'word',
'id' => 'int',
'attributes' => [
{
'value' => 'number',
'key' => 'word'
},
{
'value' => 'text' ,
'key' => 'word'
}
],
'hostname' => 'hostname',
}
]
}
]
}
};然后
my $v = new_ok('Data::Validate::Struct', [ $exp ]);
ok($v->validate($act), 'validate an exp against an act' . $v->errstr());我将根据$exp验证$act的结构
试着在模块上看看Tests ,我发现它非常有用。
https://stackoverflow.com/questions/4932218
复制相似问题