Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Robert Bašić

PHP Srbija
November 16, 2013

Robert Bašić

Mockery

PHP Srbija

November 16, 2013
Tweet

More Decks by PHP Srbija

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. Instalacija • Ili preko pear-a • Ili clone sa github-a

    • https://github.com/padraic/mockery
  5. 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
  6. Method calls expectations • shouldReceive('methodName'); • once(), twice(), zeroOrMoreTimes(), times(n),

    never() • Ako se ne postave ocekivanja moze doci do nenamernih gresaka
  7. 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.