Autor | Zpráva | ||
---|---|---|---|
vivanatura Profil * |
#1 · Zasláno: 10. 1. 2012, 22:52:25
Dobry den,
potreboval bych poradit ohledne unit testu (konkretne PHPUnit). Testuji fci, ktera prebira jeden argument. Ve fci je podminka, pokud je argument ==0, tak se vrati vysledek 0, jinak se podle argumentu dohleda pomoci selectu pole v databazi. Problem je v tom, ze testovaci fce mi projde pouze s argumentem 0. Pokud mu predam vyssi argument, vraci mi test take 0. Podle vypoctu ale 0 nema byt a dokonce i aplikace sama mi v prohlizeci zobrazi vysledek spravne. Tudiz jsem dosel k zaveru, ze je neco s temi testy, resp s nastavenim, protoze kdyz testuju ostatni fce, ktere se nepripojuji k db, tak vse funguje tak , jak ma. Byl bych vdecny, kdy mi nekdo dokazal poradit. Dekuju Jinak test fce vypada takto: public function testFunkce(){ $ocekavany = $this->object->funkce(1234); $this->assertEquals(15,$ocekavany); } a testovana fce takto: public function funkce($arg){ if($arg==0){ return 0; }else{ $vysledek = $db->query('SELECT id FROM table WHERE cislo = '.$arg.''); return $vysledek; }} Krome toho mi jeste test hazi chybu, ze se snazim ziskat property of non-object $db->query....ale na prohlizeci to vse bezi, tudiz se k db prihlasi tak, jak je to napsane..... |
||
Nox Profil |
#2 · Zasláno: 10. 1. 2012, 23:11:40 · Upravil/a: Nox
vivanatura:
V UnitTestech je důležité testovat přesně jen jednu jednotku Tudíž $db by mělo být nahrazeno nějakým objektem, který jakoby funguje dokonale, má na nějaké konkrétní vstupy nějaké výstupy. Pokud to nejde jednoduše, pak jsi právě narazil na obtížně testovatelný kód a chtělo by to upravit tak, aby šlo $db vyměňovat ... pokud je to takto funkce, mělo by se $db předat v argumentu ... http://www.phpunit.de/manual/3.7/en/test-doubles.html případně vychytanější https://github.com/padraic/mockery |
||
Časová prodleva: 12 let
|
0