Mam pytanie odnośnie pisania testów w Symfony 4 phpunit. Mam problem z mockowianiem w serwisie (ang Service) innych prywatnych serwisów, np. Repozytoriów.
W Symfony 3 robiłem to tak: pisałem mocka repozytorium i podmieniałem go w kontenerze
W Symfony 4 serwisy są prywatne. W takim razie jak się to robi?
Znalazłem
W Symfony 3 robiłem to tak: pisałem mocka repozytorium i podmieniałem go w kontenerze
$container->set('repo', $mock);
- podmieniałem prawdziwy serwis na mock'a. Wtedy w serwis używał mojego mocka zamiast prawdziwego repo.W Symfony 4 serwisy są prywatne. W takim razie jak się to robi?
Znalazłem
Czy tak powinno się je pisać? https://pastebin.com/zNGJgdDu (u góry klasa z 2 testami, na dole serwis który testuję)
Czekam na wasze opinie i wskazówki co można zrobić lepiej :)
#php #symfony 4.4 #phpunit
testFirst_Success()
- mieszane dwa style. Dbaj o to żeby test miał nazwę adekwatną do tego co testuje - ten przykład jest dosyć abstrakcyjny, ale już tutaj dopisekSuccess
gryzie; przykładowo gdybyś miał klasę która jedyne co robi to dodaje komentarz, todo tego testowanie repozytoriów w testach jednostkowych mija się z celem, bo głównie będziesz testował mocki, albo czy dobrze działają natywne elementy języka(typu typowanie, wywołania metod, ustawianie propertiesów itp)
takie rzeczy lepiej testować integracyjnie, czy to na realnej bazie, czy na jakimś sqlite albo inmemory jeśli trwa to za długo, ale tego drugiego bym unikał, jeśli trwa