/ / Czy istnieje sposób na wykorzystanie bazy danych testów w katalizatorze - perl, katalizator

Czy istnieje sposób na wykorzystanie testowej bazy danych w katalizatorze - perlu, katalizatorze

Kiedy używasz katalizatora, czy istnieje sposób na określenie bazy danych dev, testowych i produkcyjnych, tak jak w Railsach? Przejrzałem dokumentację, ale nie znalazłem odpowiedzi.

Odpowiedzi:

4 dla odpowiedzi № 1

Z odniesieniem z cpan Samouczek testowania Catalyst

Możesz zachować zarówno „produkcyjną bazę danych” dla aplikacji na żywo, jak i a „baza danych testów” dla przypadków testowych.

KONFIGURACJA BAZ DANYCH PRZEŁĄCZANIE W TWOJEJ KLASIE MODELU

Jednym z rozwiązań jest umożliwienie zastąpienia specyfikacji bazy danych zmienną środowiskową. Na przykład otwórz w edytorze lib / MyApp / Model / MyAppDB.pm i zmień __PACKAGE__->config(... deklaracja przypominająca:

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

],
);

Następnie, gdy uruchomisz przypadek testowy, możesz użyć poleceń, takich jak:

$ cp myapp.db myappTEST.db
$ CATALYST_DEBUG = 0 MYAPP_DSN = "dbi: SQLite: myappTEST.db" udowodnij --lib lib -v t / live_app01.t

Spowoduje to modyfikację DSN tylko wtedy, gdy przypadek testowybiegnie. Jeśli ty uruchom normalną aplikację bez środowiska MYAPP_DSN zdefiniowana zmienna, domyślnie będzie to ten sam dbi: SQLite: myapp.db as przed.

KONFIGURACJA BAZY DANYCH PRZEŁĄCZANIE ZA POMOCĄ WIELU PLIKÓW KONFIGURACYJNYCH

Wykorzystując Catalyst :: Plugin :: ConfigLoaders funkcjonalność do ładowania wiele plików konfiguracyjnych opartych na zmiennych środowiskowych, które można przesłonić ustawienia domyślne (produkcyjne) bazy danych.

Ustawienie $ ENV {MYAPP_CONFIG_LOCAL_SUFFIX} na„testowanie” w teście skrypt powoduje załadowanie dodatkowego pliku konfiguracyjnego o nazwie myapp_testing.conf po myapp.conf, który zastąpi wszystkie parametry w myapp.conf.

Powinieneś ustawić zmienną środowiskową w bloku BEGIN swojego skrypt testowy, aby upewnić się, że jest ustawiony przed aplikacją Catalyst zaczęło się.

Poniżej znajduje się przykład skryptu konfiguracyjnego i testowego dla a DBIx :: Model klasy o nazwie MyDB i kontroler o nazwie Foo:

myapp_testing.conf:

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

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