Testování Presenteru – proč RedirectingResponse?
- Ondřej Mirtes
- Člen | 1536
Ahoj,
chci jednoduše ozkoušet, zda-li se mi rozeběhne Presenter a vše je tedy
v pořádku:
/**
* Tests if running the presenter leads to RenderResponse.
*/
public function testRun() {
$presenter = new Web_SamplePresenter;
$response = $presenter->run(new PresenterRequest('Web:Sample', 'GET', array()));
$this->assertType('RenderResponse', $response);
}
Proč mi to ale vyhodí RedirectingResponse na
http:///?presenter=Sample
? HomepagePresenter vyhazuje
RenderResponse, nejspíš ovšem kvůli tomu, že je nastaven jako výchozí
v SimpleRouteru:
$router[] = new SimpleRouter(array(
'module' => 'Web',
'presenter' => 'Homepage',
'action' => 'default',
));
Nevím, kde je chyba – proč se SamplePresenter chce přesměrovávat na
adresu, která je navíc špatně? (aplikace běží normálně pod
http://localhost/example/document_root/
, ale jelikož spouštím
testy z příkazové řádky, tak to ani přes Apache nejde).
- David Grudl
- Nette Core | 8218
Asi by to chtělo pro ten presenter vypnout přesměrování na kanonické
url, tj. $presenter->autoCanonicalize = FALSE
.
- Ondřej Mirtes
- Člen | 1536
To by ale znamenalo toto dělat pro každý testovaný Presenter kromě toho
výchozího, pokud bych chtěl opravdu tu response, která má nastat –
RedirectingResponse bych čekal v momentě, kdy volám
$this->redirect()
. Takže nejspíš dělám něco špatně?
Mimochodem, proč je autoCanonicalize
v Presenteru (který má
být od URL úplně odstíněn) a ne v routách?