[Israel.pm] Testing problem
Jason Elbaum
Jason.Elbaum at motorola.com
Mon Jan 5 05:45:32 PST 2004
Thomas Maier wrote:
> sub method
> {
> my ($self, at param) = @_;
> $pid = open $fh,"-|","command @param";
> $x = do something with $fh;
> return $x;
> }
>
> I would like to test this method but without
> actually running the 'command'.
I haven't thought this through to the end, but here are some preliminary
ideas.
First, you need to separate the running of the command from the method.
One way to do this:
sub method
{
my ($self, $commandSubRef, @param) = @_;
# Execute command, creating a pid and a file handle
($pid, $fh) = $commandSubRef->(@param);
$x = do something with $fh;
return $x;
}
Then your production code can call the method like this:
sub command
{
my @param = @_;
$pid = open $fh,"-|","command @param";
return ($pid, $fh);
}
$self->method(command, @param);
Your test code can provide an alternative implementation of command
which, for example, reads a predefined file. For example:
sub commandTester
{
my @param = @_;
$pid = open $fh,"-|","cat testfile";
return ($pid, $fh);
}
Is this helpful?
Jason Elbaum
More information about the Perl
mailing list