2013-02-06 9 views

Odpowiedz

4

Nawiązując z CPAN Catalyst Testing Tutorial

Możesz chcieć utrzymać zarówno „bazy produkcyjne” do aplikacji na żywo i „bazy danych badawczych” dla swoich przypadków testowych.

DATABASE KONFIGURACJA PRZEŁĄCZANIE w modelu CLASS

Jednym z rozwiązań jest umożliwienie specyfikacja bazie być nadpisane zmiennej środowiska. Na przykład otwarte lib/MojaApl/Model/MyAppDB.pm w edytorze i zmienić deklarację __PACKAGE__->config(... przypominać:

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

    ], 
); 

Następnie, po uruchomieniu przypadek testowy, można użyć polecenia takie jak:

$ cp myapp.db myappTEST.db
$ CATALYST_DEBUG = 0 MYAPP_DSN = "dBi: SQLite: myappTEST.db" udowodnić --lib lib -vt/live_app01.t

To modyfikować DSN tylko podczas teczka testowa jest uruchomiona. Jeśli uruchomisz normalną aplikację bez zdefiniowania zmiennej środowiskowej MYAPP_DSN , domyślnie będzie to ta sama dbi: SQLite: myapp.db jako wcześniej.

BAZA CONFIG PRZEŁĄCZANIE użyciu wielu plikach konfiguracyjnych

Wykorzystując Catalyst::Plugin::ConfigLoader s funkcjonalność ładowania wielu plików konfiguracyjnych na podstawie zmiennych środowiskowych można przesłonić domyślnej (produkcja) ustawienia połączenia z bazą danych.

Ustawianie $ ENV {MYAPP_CONFIG_LOCAL_SUFFIX} do „testowania” w wynikach testu skrypt ładowania dodatkowego pliku konfiguracyjnego o nazwie myapp_testing.conf po myapp.conf które zastępują wszelkie parametry w myapp.conf.

Należy ustawić zmienną środowiskową w bloku BEGIN swojego skryptu testowego , aby upewnić się, że została ustawiona przed uruchomieniem aplikacji Catalyst pod numerem .

Poniżej jest przykład dla skryptu konfiguracyjnego i testowego dla modelu DBIx :: klasę o nazwie MojaBD i kontrolera o nazwie Foo:

myapp_testing.conf:

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

Sprawdź również this podczas korzystania z oddzielnych baz danych

Powiązane problemy