Luk*_*uke 6 perl orm dbix-class
我正在尝试使用DBIx:Class.我已经使用DBIx:class :: Schema :: Loader成功创建了Schema类.
我也可以连接到数据库.
#!/usr/bin/perl -w
use Test::More tests => 5;
use_ok('Models::ModelRole');
use_ok('Models::User');
my $model = Models::User->new();
cmp_ok($model->{ModelName}, 'eq', 'User', 'model name');
ok($model->connect(), "connect"); #works
ok($model->{schema}->resultset('User'));
Run Code Online (Sandbox Code Playgroud)
最后一个测试返回错误消息:
DBIx::Class::Schema::source(): Can't find source for User at ./tests/ModelsTests.pl line 29
Run Code Online (Sandbox Code Playgroud)
这是DBIx生成的类的结构:Class :: Schema :: Loader:

这是模型用户类:
package Models::User;
use DB::Glued::Schema::Result::User;
use Models::ModelRole;
use Moose;
with 'Models::ModelRole';
sub BUILD {
my $self = shift;
$self->{schema} = Glued::Schema::Result::User->new();
my @name = split('::', __PACKAGE__);
$self->{ModelName} = $name[-1];
}
1;
Run Code Online (Sandbox Code Playgroud)
我希望这是足够的信息.
架构/模型必须连接到源。DBIC 代码仅描述数据及其关系。它完全不知道来源/连接。
因此,您必须连接DB::Glued::Schema才能运行该模型。我认为最好的测试方法是连接到:memory:SQLite 数据库。DB 当然是空的。如果您需要固定装置,有一些选项/方法可以填充它。如果有的话,搜索metacpan。
有一个很好的包可以让您的测试连接变得简单:Test::DBIx::Class。
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |