DBD :: Mockを使用して、データベースを使用するコードをテストしようとしています。これまでのところ、通常のSQLクエリは問題なく機能しますが、ストアドプロシージャを呼び出すコードをテストする方法については少し戸惑っています。bound_params
コンストラクターのキーを使用してDBD::Mock::Session->new
入力パラメーターを指定することはできますが、を使用してバインドされたパラメーターの模擬結果を設定する方法が見つからないようですDBI::StatementHandle::bind_param_inout()
。
テストされるコードの例を提供するには、以下を参照してください。
use DBI;
my $dbh = DBI->connect('dbi:Mock', '', '', { RaiseError => 1, PrintError => 1 });
my $sth = $dbh->prepare(q{
BEGIN
some_stored_proc(i_arg1 => :arg1, o_arg2 => :arg2);
END;
});
my ($arg1, $arg2) = ('foo', 'bar');
$sth->bind_param(':arg1', $arg1);
$sth->bind_param_inout(':arg2', \$arg2, 200);
$sth->execute();
print STDERR "OUTPUT VALUE OF arg2 = $arg2\n";
ここで、上記のコードが実行されたときに変数にこの文字列が含まれ、出力が次のようになるよう'frobnication'
に、パラメーターのDBをシードします。arg2
$arg2
arg2の出力値=フロブニケーション