2013-02-06 8 views

risposta

4

Con riferimento da CPAN Catalyst Testing Tutorial

Si potrebbe desiderare di mantenere sia un "database di produzione" per la vostra applicazione dal vivo e una "banca dati di test" per i vostri casi di test.

database di configurazione PASSAGGIO NEL VOSTRO MODELLO CLASSE

Una soluzione è quella di consentire la specifica banca dati per essere sovrascritta con una variabile d'ambiente. Ad esempio, aprire lib/frontend/Modello/MyAppDB.pm nel vostro editor e cambiare la dichiarazione __PACKAGE__->config(... per assomigliare:

my $dsn = $ENV{MYAPP_DSN} ||= 'dbi:SQLite:myapp.db'; 
__PACKAGE__->config(
    schema_class => 'MyAppDB', 
    connect_info => [ 
     $dsn, 
     '', 
     '', 
     { AutoCommit => 1 }, 

    ], 
); 

Poi, quando si esegue il test case, è possibile utilizzare i comandi come ad esempio:

$ cp myapp.db myappTEST.db
$ CATALYST_DEBUG = 0 MYAPP_DSN = "DBI: SQLite: myappTEST.db" dimostrare --lib lib -vt/live_app01.t

Questo modificherà il DSN solo mentre il test case è in esecuzione. Se l'utente avvia la normale applicazione senza la variabile ambiente definita MYAPP_DSN, verrà utilizzata per default lo stesso dbi: SQLite: myapp.db come precedente.

database di configurazione ACCENSIONE L'utilizzo di più File di configurazione

Utilizzando le funzionalità Catalyst::Plugin::ConfigLoader s per il carico più file di configurazione basati su variabili di ambiente è possibile sovrascrivere predefinita (produzione) impostazioni di connessione al database.

Impostazione $ ENV {} MYAPP_CONFIG_LOCAL_SUFFIX a 'test' nel test risultati di script nel caricamento di un file di configurazione aggiuntivo chiamato myapp_testing.conf dopo myapp.conf che sovrascriverà i parametri in myapp.conf.

È necessario impostare la variabile di ambiente nel blocco BEGIN dello script di prova per assicurarsi che sia impostato prima che l'applicazione Catalyst sia avviata.

Il seguente è un esempio di uno script di configurazione e il test per un modello DBIx :: classe denominata MyDB e un controller di nome Pippo:

myapp_testing.conf:

<Model::MyDB> 
    <connect_info> 
     dsn dbi:SQLite:myapp.db 
    </connect_info> 
</Model::MyDB> 

Controllate anche this quando si utilizzano database separati

Problemi correlati