Я унаследовал базу данных perl. Рассмотрим следующую подпрограмму;Рефтор perl sub для проверяемости
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 подход к рефакторингу этого юга для проверки?
Посмотреть [Как издеваются встроенный оператор кавычку в Perl?] (HTTP: //stackoverflow.com/q/3678655/176646) – ThisSuitIsBlackNot
Также, на * nix 'netstat -r' просто извлекает данные из/proc/net/route, поэтому вы можете просто разобрать его напрямую. – ThisSuitIsBlackNot