Tester: Exited with HTTP code 201 (expected 200)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- skrivy
- Člen | 51
Vytvoril jsem na sandboxu jednoduchy test, jak to odsimulovat:
$ composer create-project nette/sandbox error-code
$ cd error-code
app/presenters/TestPresenter.php
<?php
namespace App\Presenters;
use Nette\Http;
class TestPresenter extends BasePresenter
{
public function actionDefault()
{
$this->getHttpResponse()->setCode(Http\IResponse::S201_CREATED);
$this->terminate();
}
}
tests/TestPresenter.phpt
<?php
namespace Test;
use Nette;
use Tester;
use Tester\Assert;
$container = require __DIR__ . '/bootstrap.php';
class TestPresenterTest extends Tester\TestCase
{
private $container;
function __construct(Nette\DI\Container $container)
{
$this->container = $container;
}
function testActionDefault()
{
$presenterFactory = $this->container->getByType('Nette\Application\IPresenterFactory');
$presenter = $presenterFactory->createPresenter('Test');
$request = new \Nette\Application\Request(
'Test',
'GET',
[ 'action' => 'default' ]
);
$presenter->run($request);
Assert::same(201, $presenter->context->getService('http.response')->getCode());
}
}
$test = new TestPresenterTest($container);
$test->run();
$ php ./vendor/bin/tester tests
_____ ___ ___ _____ ___ ___
|_ _/ __)( __/_ _/ __)| _ )
|_| \___ /___) |_| \___ |_|_\ v1.7.1
Note: No php.ini is used.
PHP 5.6.17-0+deb8u1 | php-cgi | 8 threads
.F
-- FAILED: error-code/tests/TestPresenter.phpt
Exited with HTTP code 201 (expected 200)
FAILURES! (2 tests, 1 failure, 0.6 seconds)
Editoval skrivy (8. 4. 2016 13:42)
- Michal Vyšinský
- Člen | 608
Ahoj,
první parameter je očekáváná (expected) hodnota, druhý parametr je
aktuální (actual) výsledek. Jinak v testu bys měl mít jasně dáno, co
chceš mít jako výsledek, takže pokud presenter vrací 200, tak uprav test a
očekávej 200, pokud chceš, aby presenter vracel 201, tak uprav presenter.
- zarubik
- Člen | 31
Při testovaní přes php-cgi je zapnuta kontrola HTTP code 200. Je třeba přidat do anotací @httpCode 201 nebo any.
<?php
/**
* @httpCode any
*/
namespace Test;
use Nette;
use Tester;
use Tester\Assert;
$container = require __DIR__ . '/bootstrap.php';