Problemi sa unit testiranjem
●
Kod koji koristi 3rd party servise i API-e
●
Baze podataka
●
Delovi koda koji nisu bitni za kod koji se
trenutno testira
Slide 3
Slide 3 text
Kako resiti te probleme?
●
Izbegavati pozive ka bazi
●
Izbegavati pozive ka vanjskim servisima
●
Izbegavati pozive ka delovima naseg koda koji
nam nije interesantan
●
Izmokovati pokretne delove
Sta je Mockery?
●
Framework za pravljenje mock objekata
●
Lako za koristenje sa PHPUnit-om (a verovatno
i sa drugim PHP unit testing alatima)
●
Mnogo lakse za koristenje nego mockovi
ugradjeni u PHPUnit
Instalacija
●
Ili preko pear-a
●
Ili clone sa github-a
●
https://github.com/padraic/mockery
Slide 9
Slide 9 text
Povezivanje sa PHPUnit-om
●
Dodati listener u phpunit.xml
Slide 10
Slide 10 text
PHPUnit bootstrap
●
Podesavanje autoload-a
Slide 11
Slide 11 text
Jednostavan primer
●
Foo ima dependency na Bar
●
Foo poziva metodu od Bar objekta koja vraca
neki rezultat
●
Ne zelimo da pozovemo pravu metodu, vec
mockovanu
●
Ovo postaje mnogo komplikovanije u stvarnom
zivotu
Slide 12
Slide 12 text
Jednostavan primert
Slide 13
Slide 13 text
Method calls expectations
●
shouldReceive('methodName');
●
once(), twice(), zeroOrMoreTimes(), times(n),
never()
●
Ako se ne postave ocekivanja moze doci do
nenamernih gresaka
Crazy bits
●
Ne radi diff nad parametrima metoda tipa
array tako da je tesko provaliti sta se ne slaze
●
--process-isolation ne radi assertion count
●
Reflection koji Mockery koristi zna da
poblesavi sa PHP klasama, npr. SPL,
Gearman ...
●
__magic methods... just don't.