Injection vlastního Nette\Security\User do presenteru
- grogy
- Člen | 147
Ahoj,
zkusil jsem implementovat vlastní řešení
Nette\Security\User
, abych mohl otestovat presenter. Bohužel na
mě Nette řve
Nette\DI\MissingServiceException: Service of type Nette\Security\User not found.
Ovšem nenašel jsem žádné rozhraní a Nette\Security\User
obsahuje final metody.
Jak můžu docílit vlastní implementace, abych mohl testovat?
Editoval grogy (23. 11. 2013 22:09)
- enumag
- Člen | 2118
Velmi špatně, protože Nette\Security\User je třída a nejde o implementaci žádného interfacu. Navíc obsahuje spoustu final metod takže jde jen obtížně namockovat. Knihovna Mockery to nějakým obskurním způsobem umí, jen se ta reálná třída nesmí nikdy naloadovat. Což je taky na dvě věci protože kdybys tu reálnou třídu v jiném testu potřeboval, musel bys zajistit totální izolaci těch test casů což je dost často problém.
Sečteno podtrženo, tohle je (imho) jedno z míst kde nám Nette vysloveně hází klacek pod nohy. Pokud se pamatuji tak kdysi existovalo rozhraní IUser, netuším proč bylo odstraněno.
Editoval enumag (24. 11. 2013 0:04)