Perl 是否有办法在catalyst中使用测试数据库
在使用catalyst时,是否有一种方法可以像在Rails中那样指定开发、测试和生产数据库?我查阅了文档,但没有找到答案。参考cpan 您可能希望维护实时应用程序的“生产数据库”和 用于测试用例的“测试数据库” 在模型类中切换数据库配置 一种解决方案是允许使用环境变量覆盖数据库规范。例如,在编辑器中打开lib/MyApp/Model/MyAppDB.pm并更改Perl 是否有办法在catalyst中使用测试数据库,perl,catalyst,Perl,Catalyst,在使用catalyst时,是否有一种方法可以像在Rails中那样指定开发、测试和生产数据库?我查阅了文档,但没有找到答案。参考cpan 您可能希望维护实时应用程序的“生产数据库”和 用于测试用例的“测试数据库” 在模型类中切换数据库配置 一种解决方案是允许使用环境变量覆盖数据库规范。例如,在编辑器中打开lib/MyApp/Model/MyAppDB.pm并更改 \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>配置(…声明类似于: my $dsn = $E
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>配置(…
声明类似于:
my $dsn = $ENV{MYAPP_DSN} ||= 'dbi:SQLite:myapp.db';
__PACKAGE__->config(
schema_class => 'MyAppDB',
connect_info => [
$dsn,
'',
'',
{ AutoCommit => 1 },
],
);
然后,在运行测试用例时,可以使用以下命令:
$cp myapp.db myappTEST.db$CATALYST_调试=0 MYAPP_DSN=“dbi:SQLite:myappTEST.db”prove--lib-vt/live_app01.t 这将仅在测试用例运行时修改DSN 在不使用MYAPP\u DSN环境的情况下启动普通应用程序 变量定义后,它将默认为与相同的dbi:SQLite:myapp.db 以前 使用多个配置文件切换数据库配置 通过利用s的功能加载 基于环境变量的多个配置文件,您可以覆盖 您的默认(生产)数据库连接设置 在测试中将$ENV{MYAPP\u CONFIG\u LOCAL\u SUFFIX}设置为“testing” 脚本导致加载名为的附加配置文件 myapp.conf之后的myapp_testing.conf将覆盖任何参数 在myapp.conf中 您应该在程序的BEGIN块中设置环境变量 测试脚本,确保在启动Catalyst应用程序之前已设置脚本 开始 下面是一个配置和测试脚本的示例 DBIx::名为MyDB的类模型和名为Foo的控制器: myapp_testing.conf:
<Model::MyDB>
<connect_info>
dsn dbi:SQLite:myapp.db
</connect_info>
</Model::MyDB>
dsn dbi:SQLite:myapp.db
使用单独数据库时也要检查您阅读了吗?