Unit testing presenterů a rout
- maarlin
- Člen | 207
DocX napsal(a):
Honza M. napsal(a):
David Grudl napsal(a):
Z bootstrapu bych odstranil všechno, co není pro test potřebné, což je … všechno ;)
No a jak se zbavím toho
$application->run()
?Možná
<?php require APP_DIR . '/Presenters/SomePresenter.php'; ... $request = new PresenterRequest(...); $presenter = new SomePresenter($request); $response = $presenter->run(); ... ?>
?
Je fajn že můžu pustit presenter samostatně bez
$application->run()
, ale když se úplně obejde původní
bootstrap.php, jak se budou testovat routy, a další věci v něm
přímo obsažené?
Někde
jsem zahlédl examples, co využily prostě původní bootstrap a detekci toho,
že běží testy přes consoleMode, ovšem to mi taky nepřijde ideální
s ohledem na to, že mám třeba presentery/actions, které se spouští skrz
CLIRouter
(jehož použití je taky ovlivněno nastavením
consoleMode) a tam je asi žádoucí, aby se zavolalo
$application->run()
.
Objevuji postupně TDD v PHP a narazil jsem na názory, které bych potřeboval potvrdit, nebo vyvrátit, nebo obecně nějak okomentovat vlastním názorem.
Testování datových modelů nepatří do PHPUnit Test Casů.
https://forum.nette.org/…va-25-6-2011#…
Pokud opravdu ne, kam tedy patří? Jak a kde bych měl testovat datové modely?
U TDD se nejprve píšou testy a až poté se píše kód (snaží se o „co nejmenší, co vyhoví testům“).
Automatické generování skeletonů testů skrz IDE (NetBeans) třeba z anotací a napsaného kódu mám tedy úplně hodit za hlavu?
Objevené zdroje pro TDD:
https://pla.nette.org/…-a-testovani
http://webexpo.stream.cz/…ment-v-nette
A netrpělivě čekám na záznam z Bratislavské (testovací) PS. :-)
Editoval maarlin (17. 7. 2011 13:53)
- Filip Procházka
- Moderator | 4668
Testování databáze je neskutečná prasárna. V práci máme pár starých modelů na které se bojíme sahat, protože nejsou testy, ale modely jsou napsány jako ActiveRecord a přímo přistupují k databázi. Když je chceš otestovat, musel by jsi buďto staticky mocknout připojení pro databázi, nebo zkrátka nechat je číst databázi a testovat výsledky. Napsal jsem pár takových testů a je to vskutku utrpení, jednotlivé testy běží né milisekundy, ale vteřiny… No je to hnus velebnosti. Dekompozice je jediná možná cesta. (nebo smazat a napsat znovu)
Stejně si myslím, že datové modely není potřeba testovat, ale to bude tím, že nevím jak :)
U TDD se nejprve píšou testy a až poté se píše kód (snaží se o „co nejmenší, co vyhoví testům“).
Automatické generování skeletonů testů skrz IDE (NetBeans) třeba z anotací a napsaného kódu mám tedy úplně hodit za hlavu?
Testy píšeš prvně, aby jsi ověřil, že neprojdou. Takže když napíšeš testy a vygeneruješ kód a pak testy projdou (po opravě pár překlepů) tak je to v pořádku ne?