Testování presenteru – InvalidLinkException – cannot load presenter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Paradiso
Člen | 101
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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

Jan Endel
Člen | 1016
+
+1
-

Integračními/Unit testy testujeme modelovou vrstvu, na presentery máme Behat/Selenium.