Testování REST API pomocí Nette Tester
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- fary
- Člen | 155
zrovna resim jednu aplikaci, kde je potreba implementovat rest api a idealne toto api i otestovat. snazim se o to za pomoci nette testeru a k tomu pouzivam utilitu HttpServer z projektu Kdyby. jeden z testu vypada takto:
<?php
namespace Tests\Api\Presenters;
use Tester;
use Tester\Assert;
use Kdyby\TesterExtras\HttpServer;
use GuzzleHttp;
use Nette\Utils\Json;
require __DIR__ . '/../bootstrap.php';
/**
* @testCase
*/
class CountryPresenterTest extends Tester\TestCase
{
public function testActionGet()
{
$server = new HttpServer;
$server->start(__DIR__ . '/../index.php');
$client = new GuzzleHttp\Client;
$response = $client->get($server->getUrl() . 'api/country', [
'headers' => ['USER-TOKEN' => 'api-token'],
'http_errors' => false,
'synchronous' => true,
]);
Assert::same(200, $response->getStatusCode());
$json = $response->getBody()->getContents();
$res = Json::decode($json);
Assert::type('array', $res);
Assert::count(258, $res);
Assert::same($res[0]->name, 'Afghánistán');
Assert::same($res[1]->name, 'Alandské ostrovy');
}
}
$testCase = new CountryPresenterTest;
$testCase->run();
problem je, ze request se provede v poradku a vrati se mi json
($json = $response->getBody()->getContents();
), ovsem na
konci toho json retezce je pripojeno ‚Error: This test forgets to execute an
assertion.‘ primo v samotne response. nesetkal se s timto nekdo? popr. jakym
zpusobem testujete rest api vy?
- jiri.pudil
- Nette Blogger | 1029
Ten serverový index.php je přímo aplikační index, nebo používáš
nějaký upravený pro testy? Nejspíš upravený kvůli namockování služeb
apod., že? Nevoláš v něm někde
Tester\Environment::setup()
?