Automatické testy by nám měly zajišťovat ověření správného chování funkcí.
Pro efektivní a ne příliš otravující testování je pár doporučení, kterými je dobré se řídit. Spousta jich vychází z Extremely Defensive PHP
- Chování (změnu stavu) pokrýváme unit testy. Testujeme všechny scénáře (cesty, kterými se kód může ubírat) [1]
V listenerech se většinou nachází nějaké side-effecty, kterými se nechceme zabývat při vykonávání hlavní akce (odeslání e-mailu o nějaké akci, apod). Stačí testovat v rámci integračního testu hlavní akce.
Integrační test s databází
Vyřezávat komunikaci se SkautISem do samostatných služeb které pouze volají SkautIS a mapují I/O na nějaká rozumná DTO. API těchto služeb nadefinovat jako interface a pro testy implementaci nahrazovat fake objektem.
Akceptační testy, pokud jsou jednoduché (většinou nejsou a je s tím hrozná práce). Pokud nejsou, tak 🙏
Jednotlivé testy:
vendor/bin/codecept run <cesta k souboru>
Všechny daného typu lze spustit v kontejneru:
phing tests
phing tests-acceptance
phing tests-integration
phing tests-unit
phing tests-with-coverage
Pomocí make na hostitelském stroji:
make tests-all
make tests-acceptance
make tests-integration
make tests-unit
make tests-with-coverage