Tester: testování presenterů – isLinkCurrent

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

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

mas spatne request,neni v nem nazev modulu:

$request = new Request("Front:Company", ...);
Casper
Člen | 253
+
0
-

Jsem to ale vůl, díky! :)