Я пытаюсь изменить свой тест, чтобы любая работа с базой данных откатывалась по завершении. Однако кажется, что где-то в коде, который я тестирую, явно вызывается $ dbh-> commit. Есть ли способ переопределить метод commit объекта DBI :: db для полного поворота коммитов?
Я пытался использовать Test :: MockObject :: Extends, но это, похоже, наносит вред $ dbh:
$dbh = ConnectToDB();
$dbh = Test::MockObject::Extends->new( $dbh );
$dbh->mock( 'commit', sub { warn("Caught you committing.") } );
Позже, когда я пытаюсь использовать $ dbh для выполнения какой-то работы, я получаю:
Не удалось найти метод объекта "fetchrow_array" через пакет "T :: MO :::: st"
Похоже, $ sth, которые я в итоге создал с помощью смоделированного $ dbh, настроены неправильно. У кого-нибудь есть хороший способ полностью отключить коммиты для определенного $ dbh?
База данных, к которой я подключаюсь, - Oracle, для чего она стоит.
Обновление
Как оказалось, мы переопределяли & DBI :: db :: commit в методе, очень похожем на ответ Axeman, но на самом деле фиксация происходила из-за неконтролируемого коммита в хранимой процедуре, вызываемой во время выполнения мой тест.