Testování presenteru, předání GET parametru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- johnikx
- Člen | 2
Prošel jsem snad všechny návody i vlákna ve zdejším fóru, jak testovat nette presentery, ale na jednu věc nemůžu prostě přijít.
Mám následující testovací kód (úryvek z PHPUnit test case):
<?php
$requestData = array("action" => "detail", "name" => "whatever");
$presenter = new ApiPresenter($this->container, $this->container->mapper);
$request = new Nette\Application\Request("api", "GET", $requestData, $requestData);
$response = $presenter->run( $request );
$this->assertInstanceOf("Nette\Application\Responses\JsonResponse", $response);
?>
a v testovaném presenteru se potřebuji rozhodovat podle „name“:
<?php
$name = $this->getHttpRequest()->getQuery("name");
?>
Nicméně se nedaří „name“ parametr vůbec předat. Lze nějak z toho testu nasimulovat předání GET parametru „name“? Díky!
Editoval johnikx (3. 11. 2012 22:09)
- llook
- Člen | 407
Je možné podstrčit vlastní HttpRequest do kontextu:
$container->httpRequest = new \Nette\Http\Request(
new \Nette\Http\UrlScript(/* URL */),
NULL, // query
NULL, // post
NULL, // files
NULL, // cookies
null, // headers
NULL, // method
NULL, // remoteAddres
NULL // remoteHost
);
$container->classes['nette\\http\\irequest'] = 'httpRequest';