您好我正在使用phpunit进行测试,使用Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase进行单元测试。到目前为止没有问题,但现在我们开始使用https,我的测试不再工作了。我的测试中的每个请求都开始得到301响应代码。我的问题是如何告诉Symfony \ Component \ HttpKernel \ Client发出请求 https ://localhost.com/uri而不是 http ://localhost.com/uri?
修改
在symfony网站http://symfony.com/doc/current/book/testing.html中,他们展示了如何配置服务器参数,并且存在代码和平,如
$client->request(
'GET',
'/demo/hello/Fabien',
array(),
array(),
array(
'CONTENT_TYPE' => 'application/json',
'HTTP_REFERER' => '/foo/bar',
'HTTP_X-Requested-With' => 'XMLHttpRequest',
)
);
我试图按照http://php.net/manual/en/reserved.variables.server.php中提到的HTTPS元素将我的代码更改为
$client->request('GET',
'/'.$version.'/agencies/'.$agencyId,
array(),
array(),
array('HTTPS' => 'on')
);
然而,它仍然无效?
答案 0 :(得分:15)
感谢@WouterJ我改变了我的客户端创建:
static::createClient();
为:
static::createClient(array(),array('HTTPS' => true));
它解决了我的问题。
事实证明,我无法在客户端 - >请求中提供HTTP_HOST和HTTPS参数。它应该在客户创建时确定。
答案 1 :(得分:0)
我正在使用Symfony4,这就是我创建功能测试的方式。我已经测试了以下代码,并且工作正常。
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());
}
}