【发布时间】:2016-09-05 19:21:36
【问题描述】:
我继承了一个 perl 代码库。考虑以下子程序;
sub getSysRTable
{
my $iface = shift;
return if not length($iface);
my %ip_routes;
my @routes = `/usr/bin/netstat -rn`;
foreach my $route(@routes) {
if ($route =~ /([\S.]+)\s+([\d.]+.[\d.]+.[\d.]+.[\d.]+)\s+(UGS|UGHS)\s+($iface)/ )
{ $ip_routes {$1} = $2 }
}
return %ip_routes;
}
我想为此代码编写单元测试。我想到的测试将使用来自netstat -rn 的示例输出并检查预期的行为。 sub 按原样调用命令,因此注入我的测试数据对于此实现是有问题的。
什么是惯用的 perlish 方法来重构这个 sub 以实现可测试性?
【问题讨论】:
-
另外,在 *nix
netstat -r上只是从 /proc/net/route 中提取数据,所以你可以直接解析它。
标签: perl unit-testing refactoring