Unit testing presenterů a rout

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

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://tester.nette.org/cs/

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
+
0
-

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?