2014-10-11 41 views
6

我试图使用DBIx:Class。我已经使用DBIx成功创建了Schema类:class :: Schema :: Loader。DBIx:Class - 找不到模型

我也可以连接到数据库。

#!/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')); 

最后测试返回错误消息:

DBIx::Class::Schema::source(): Can't find source for User at ./tests/ModelsTests.pl line 29 

这是从DBIx生成的类的结构:类::架构::装载机:

enter image description here

这是模型用户类别:

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; 

我希望这是足够的信息。

回答

0

架构/模型必须连接到源。 DBIC代码仅描述数据及其关系。关于源/连接完全不可知。

所以你必须连接DB::Glued::Schema才能够锻炼模型。我认为测试的最佳方式是连接到:memory: SQLite数据库。数据库当然是空的。如果您需要固定装置,有几个选项/方法可用于填充它。如果你这样搜索metacpan。

有一个很好的包让你的测试连接变得简单:Test::DBIx::Class