Test mocking sth bind_param_inout
harryf
created: 2006-09-01 03:32:41
Hi, I'm trying to test some code that calls a DB stored procedure and gets a value back via DBI::st::bind_param_inout(). Have a mock object (created using Test::MockObject) representing the statement handle but can't work out how to get the value back, as illustrated by;
use strict;

sub isMoreThanTen {
    my ( $sth ) = shift;
    my $count = undef;
    $sth->bind_param_inout(\$count);
    return $count > 10 ? 1 : 0;
}

use Test::MockObject;
my $msth = Test::MockObject->new();

# Attempting to return by reference...
$msth->mock('bind_param_inout',sub { $_[0] = 11; });

if ( isMoreThanTen($msth) ) {
    print "More than 10\n";
} else {
    print "Less than or equal to 10\n";
}
Which results in;
Use of uninitialized value in numeric gt (>) at bindinout.pl line 7.
Less than or equal to 10
Have also looked as DBD::Mock but (unless I've misunderstood) it's bind_param_inout doesn't seem to be intended for this purpose. How can I do this? Many thanks.
Re: Test mocking sth bind_param_inout
created: 2006-09-01 06:50:59

The first argument to the mocked method is the invocant. I think you mean instead:

$msth->mock('bind_param_inout',sub { ${ $_[1] } = 11; });
Re^2: Test mocking sth bind_param_inout
created: 2006-09-01 07:06:23
Jeez - will go and slap myself now - don't want to total the time I spent looking in the wrong place. Had missed the point on the reference there as well. Many thanks.

perlmonks.org content © perlmonks.org and Anonymous Monk, chromatic, harryf

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03