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 $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 w dokumentacji że tworzy się mocki i wstrzykuje do serwisu wszystkie zależności (buduje się go ręcznie). To jedyny sposób?
@tylko_na_dole: jest publiczny kontener do testów w nowszym SF https://symfony.com/blog/new-in-symfony-4-1-simpler-service-testing poszukaj jak w WebTestCase ustawiany jest self::$container jeżeli chcesz się do niego dostać bez dziedziczenia po WebTestCase. No i tak jak przedmówcy jeżeli masz możliwość to testuj bez odpalania aplikacji jeżeli to testy jednostkowe.
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 w dokumentacji że tworzy się mocki i wstrzykuje do serwisu wszystkie zależności (buduje się go ręcznie). To jedyny sposób?
#php #symfony 4.4 #phpunit
Jak wyciągasz rzeczy z DIC, to nie robisz testów jednostkowych.
https://symfony.com/blog/new-in-symfony-4-1-simpler-service-testing
poszukaj jak w WebTestCase ustawiany jest self::$container jeżeli chcesz się do niego dostać bez dziedziczenia po WebTestCase.
No i tak jak przedmówcy jeżeli masz możliwość to testuj bez odpalania aplikacji jeżeli to testy jednostkowe.