Jak začít s testováním v nette testeru
- Jiří Nápravník
- Člen | 710
Chtěl bych konečně začít testovat jinak než tupm proklikáváním aplikace. Ale nevím, jak pořádně začít, když hledám nějaké tutoriály, tak vidím většinou jen takové ty hloupé, že kydž sečtu dvě čísla, tak mi opravdu vychází to správné apod. Je nějaký pokročilejší příklad? Například, mám registrační formulář, ten vyplním, uživatel se uloží do databáze a odešle se mail. Jak na to vůbec? Odkud začít? Jak simulovat databázi? Nebo se nesimuluje a prostě si ji musím vždy vytvořit na začátku testu a pak smazat? Nebude to pak u velké aplikace samotné testy hodně spožďovat, protože budu muset hlídat zámky databáze, a nepůjde to paralelně apod…
Je prostě někde k dispozici opravdu pořádně ukázaná nějaká jednoduchá aplikace otestovaná s využitím databáze, prostě něco pokročilejšího?
- Šaman
- Člen | 2658
Databáze se dá testovat různě. Buď opravdu zápisem do db (pak je na to
většinou samostatná testovací databáze), nebo třeba tak, že si testem
zkontroluješ, jaká query by do databáze posílá.
Pěknou ukázku reálných testů máš třeba v repozitáři LeanMapperu
- pawouk
- Člen | 172
S testováním databáze je to složitější, osobně jsem to několikrát mockoval, ale je s tím hrozně moc práce málo užitku. Nakonec to dělám tak, že před spuštěním testu se naklonuje současná databáze a nad ní se spustí testy, které databázi modifikují. Určitě bych tuto část ale oddělil a spouštěl jí jednou za čas. Testů který nepotřebují databázi může být mraky. Například presentery testuji takto
Jinak jak říkám i bez databáze se toho dá otestovat celkem dost. Například před zavoláním testu zavoláš beginTransaction a na konci rollback, tím částečně otestuješ I databázi (existenci sloupců atd..)
- newPOPE
- Člen | 648
@JiříNápravník ak nechces v testovani pouzivat len Unit testing tak sa na Nette tester (nic proti) alebo PHPUnit vykasli a rovno zacni s Codeception. Je to jedno z najlepsich rieseni co momentalne je na trhu :). Ked sa pozries na zoznam modulov ktore to podporuje (DB, REST, …) tak nie je co riesit. Vyborne sa to hodi na legacy app ale aj na app pisanu od zaciatku.