Testování presenteru – InvalidLinkException – cannot load presenter
- Paradiso
- Člen | 101
Ahoj, zkouším testovat presentery, ale mám problém s linkama. Pokud se
snažím vytvořit link, nebo redirect, tak mi laděnka zařve
InvalidLinkException se zprávou, že nemůže najít
presenter. Presenter se totiž snaží hledat
v tests/presenters/MyPresenter, přitom je presenter
v app/MyModule/presenters/Mypresenter.
Presenter vytvářím podle https://phpfashion.com/…teru-v-nette
Předem díky, za rady:-)
Editoval Paradiso (12. 1. 2015 11:20)
- jiri.pudil
- Nette Blogger | 1029
Tam je zřejmě problém, že za appDir se defaultně dosazuje podle backtrace složka se souborem, v němž se vytváří Configurator (bootstrap.php), takže to za aplikační složku dosadí složku s testy. Zkus to v testovacím bootstrapu ručně přepsat:
$configurator->addParameters([
'appDir' => __DIR__ . '/../app',
]);
- Paradiso
- Člen | 101
Díky za info. Pomohlo, ale z části. Jelikož se to snaží hledat v app/presenters a já bych to potřeboval hledat v app/MyModlue/presenters. Vím tedy, jak toho docílit v linku (:My:Presenter:Action), ale i tak při testu failuje UI presenter, že se snaží procházet UI\Presenter->globalParams.
No jestli na to nejdu úplně špatně, protože jsem zapomněl dodat, že já se nesnažím testovat akci, ale callback methodu, takže nevolám $presenter->run($request), ale $presenter->myMethod($form);
Editoval Paradiso (12. 1. 2015 13:12)
- Paradiso
- Člen | 101
tak, aby to neházelo chybu s global params, tak stačí před callbackem, zavolat run a poslat si request i na akci. To si myslím, že dává smysl a není v tom problém.
Každopádně stále bojuji s tím, že musím zadávat i název modulu do linku, což se mi nelíbí:-).
Potom mi to ještě hází abortException po redirectu, ale to si myslím, že by stačilo ošetřit chycením této vyjímky, protože je to mimo presenter::run().
PS: pokud si někdo myslí, že dělám něco špatně, rád se poučím :-)
Editoval Paradiso (12. 1. 2015 13:42)
- Paradiso
- Člen | 101
Zatím jsem tam kde jsem byl. Budu si zase muset udělat zkoušející den a nějak s tím pohnout. Ale zaráží mě, že nikdo na ten problém nenarazil. Buďto musím dělat něco blbě. (což bych se rád dozvěděl a myslím si, že je to dost možné), nebo nikdo netestuje:-D A to se vždy hlásí spoustu lidí, že jo :-D