2014-10-11 21 views
6

Sto tentando di utilizzare DBIx: Class. Ho creato con successo la classe Schema usando DBIx: class :: Schema :: Loader.DBIx: Classe - impossibile trovare la fonte per il modello

Posso anche connettermi al database.

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

L'ultimo test restituisce il messaggio di errore:

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

Questa è la struttura della classe generata da DBIx: Classe Schema :: :: Loader:

enter image description here

Questa è la classe utente del modello:

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; 

Spero che questa informazione sia sufficiente.

risposta

0

Schemi/modelli devono essere collegati a una fonte. Il codice DBIC sta solo descrivendo i dati e le sue relazioni. È completamente agnostico sulla sorgente/connessione.

Quindi è necessario collegare DB::Glued::Schema per poter esercitare il modello. Il modo migliore per i test, credo, è quello di connettersi a un database SQLite :memory:. Il DB sarà ovviamente vuoto. Ci sono alcune opzioni/approcci per popolarlo se hai bisogno di infissi. Cerca metacpan se lo fai.

C'è un bel pacchetto per rendere semplici le connessioni di test: Test::DBIx::Class.

Problemi correlati