Spouštění Nette testů s PostgreSQL

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Milo
Nette Core | 1283
+
0
-

Pokud sami, ať už z jakéhokoliv důvodu, upravujete zdrojáky Nette, je vhodné po úpravách spustit testy. V devel verzi na GitHubu se nedávno objevila možnost testovat Nette\Database oproti PostgreSQL. Ve výchozím nastavení se k testům používá superuživatel postgres. Zde popíšu, jak si PostgreSQL připravit na testy s běžným uživatelem.

# Připojíme se PostgreSQL serveru k databázi template1 jako superuživatel postgres
psql -U postgres -h localhost template1

# Vytvoříme novou roli uživatele nette_test
template1=# CREATE ROLE nette_test PASSWORD 'qwert' LOGIN;
CREATE ROLE

# Vytvoříme databázi pro testy
template1=# CREATE DATABASE nette_test OWNER nette_test ENCODING 'UTF8';
CREATE DATABASE

# Připojíme se do nově vytvořené databáze
\c nette_test

# Změníme vlastníka schématu public (pro testy podstatná věc)
nette_test=# ALTER SCHEMA public OWNER TO nette_test;
ALTER SCHEMA

Stáhneme aktuální Nette devel verzi z Githubu a upravíme soubor tests/Nette/Database/databases.ini

[mysql]
dsn = "mysql:host=localhost"
user = root
password =

[postgresql]
dsn = "pgsql:host=localhost;dbname=nette_test"
user = nette_test
password = qwert

Ještě se vyzkoušíme přihlásit jako uživatel nette_test k databázi nette_test.

psql -U nette_test -h localhost nette_test

Pokud se nelze přihlásit, je nutné upravit pg_hba.conf umístěný někde v /etc/ nebo C:\Program Files\.

host    nette_test      nette_test      127.0.0.1/32            md5

A může se testovat.

Editoval Milo (12. 9. 2012 13:07)

edke
Člen | 198
+
0
-

Ahoj,

vedel by si naviest, ako testovat aplikaciu napisanu v Postgre, ci si vytvorit nejaku testovaciu databazu a testovat priamo na nejakej vzorke dat, alebo ako by sa dalo mockovat Nette\Database, napriklad Nette\Database\Row a pod. ?

Milo
Nette Core | 1283
+
0
-

Bohužel nevěděl, nemám moc zkušeností. Když něco vyvýjím tak většinou pro PostgreSQL a driver v Nette\Database nebyl donedávna ani testovaný. Používal jsem tedy pouze okrajově.