The canonical answers are DBD::Mock
(for a more purist solution) and DBD::SQLite
(for a more practical solution). DBIx::Class
(the current "premier Perl ORM", whatever that means) uses DBD::SQLite
for all of its testing needs. This means you have a huge corpus of prior art to work from.
Note: DBD::SQLite implements a subset of ANSI SQL. This means that you will not be able to test things like triggers, views, stored procedures, etc. Nor will you be able to test usage of DBMS-specific functions or keywords (such as LIMIT, CONNECT BY, etc). For that, you will need to use DBD::Mock.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?