現在、私はSymfony2アプリケーションの受け入れテストケースを作成しています。私は次のことをやっている。symfony2受け入れテストが動作しない
namespace my\Bundle\ProjectBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DefaultControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$client->request('GET', '/');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
}
しかし、次のログファイルを調べると失敗します。
app/logs/test.log
は、$_SERVER
変数はそれにいくつかの値が欠落していることが表示されます
[2016-09-06 12:56:58] request.CRITICAL: Uncaught PHP Exception PHPUnit_Framework_Error_Notice: "Undefined index: SERVER_PROTOCOL" at /var/www/src/my/Bundle/projectBundle/Helper/DataHelper.php line 139 {"exception":"[object] (PHPUnit_Framework_Error_Notice(code: 8): Undefined index: SERVER_PROTOCOL at /var/www/src/my/Bundle/projectBundle/Helper/DataHelper.php:139)"} []
ことが表示されます。テストケースを書く上での手がかりや、より良い方法があります。
DataHelper.php
public function getCanonicalUrl()
{
$router = $this->container->get('router');
$req = $this->container->get('request');
$route = $req->get('_route');
if (!$route) {
return 'n/a';
}
$url = $router->generate($route, $req->get('_route_params'));
$protocol = stripos($_SERVER['SERVER_PROTOCOL'], 'https') === true ? 'https://' : 'http://';
return $protocol . ($this->getHostname() . $url);
}
は、なぜあなたは、引数としてHTTPS => trueを渡していますか? – COil
@ Coilは本当に重要ですか?問題は? – bharatesh
DataHelper.phpクラスのコードを表示できますか? – Matteo