سؤال

Hi i am using phpunit for testing and Symfony\Bundle\FrameworkBundle\Test\WebTestCase for unit testing. So far there were no problem but now we start to use https and my tests are not working anymore.I start to get 301 response code for my every request in my tests. My question is how do i tell to Symfony\Component\HttpKernel\Client to make requests to https://localhost.com/uri instead of http://localhost.com/uri ?

EDIT

In symfony website http://symfony.com/doc/current/book/testing.html they show how to configure server parameters and there is a code peace like

$client->request(
 'GET',
 '/demo/hello/Fabien',
 array(),
 array(),
 array(
     'CONTENT_TYPE'          => 'application/json',
     'HTTP_REFERER'          => '/foo/bar',
     'HTTP_X-Requested-With' => 'XMLHttpRequest',
 )
);

I tried to give HTTPS element as mentioned in http://php.net/manual/en/reserved.variables.server.php changed my code as

$client->request('GET',
         '/'.$version.'/agencies/'.$agencyId,
         array(), 
         array(),
         array('HTTPS' => 'on')
         );

However, it is still not working?

هل كانت مفيدة؟

المحلول

Thanks to @WouterJ i changed my client creation from :

static::createClient();

to:

static::createClient(array(),array('HTTPS' => true));

it solved my problem. It turns out that I cant give HTTP_HOST and HTTPS parameters in client ->request. It should be determined while client creation.

نصائح أخرى

I am using Symfony4 and this how I created my functional test. I have tested following code and it works fine.

namespace App\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class CategoryControllerTest extends WebTestCase
{
    public function testList()
    {
       $client = static::createClient(); 

       $client->request('GET', '/category/list');

       $this->assertEquals(200, $client->getResponse()->getStatusCode());
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top