Tester: testování presenterů – isLinkCurrent
- Casper
- Člen | 253
Zdravím,
dal jsem se do testování presenterů a narazil jsem na (podle mě) zvláštní
chování. Pokud používám moduly (např. Front) a v renderované šabloně
mám
$presenter->isLinkCurrent('Company:profile')
,
dostanu chybu o neexistenci souboru:
ErrorException: Exception in Nette\Templating\Template::__toString(): Cannot load presenter 'Company', class 'CompanyPresenter' was not found in '/tests/presenters/CompanyPresenter.php'. in \libs\Nette\Application\UI\Presenter.php:852
Při použití absolutního odkazu
$presenter->isLinkCurrent('Front:Company:profile')
vše funguje jak má (presenter je v
\FrontModule\CompanyPresenter
). Zkoušel jsem koukat do Presenter::createRequest,
nicméně nepochopil jsem úplně, proč se to takto chová. Při přístupu
z prohlížeče vše funguje.
Stejnou chybu dostávám i při pokusu o přesměrování na presenter
pomocí $this->redirect("Company:profile");
. Dělám něco
špatně? Testy jsou jinak velmi jednoduché:
public function testProfile() {
$request = new Request('Company', 'GET', array('action' => "profile"));
$response = $this->presenter->run($request);
Assert::true($response instanceof TextResponse);
Assert::true($response->getSource() instanceof ITemplate);
Assert::true(is_string($response->getSource()->__toString()));
}
Mapování v configu definované nemám.
- David Matějka
- Moderator | 6445
mas spatne request,neni v nem nazev modulu:
$request = new Request("Front:Company", ...);