Symfony测试中不兼容的请求类型

时间:2017-12-14 08:11:00

标签: php symfony

我有使用覆盖的Symfony \ Component \ HttpFoundation \ Request

的遗留代码
use Symfony\Component\HttpFoundation\Request as CoreRequest;

class Request extends CoreRequest
{

所以控制器看起来像

public function myAction(OverridedRequest $request)
{

我想为这些控制器编写一些简单的测试,但是我收到了有关不兼容类型的错误。

  

1)测试\ AppBundle \ Controller \ ResidentControllerTest :: testGetResidents

     

TypeError:传递给的参数1   AppBundle \ Controller \ ResidentController :: getResidentsAction()必须是   AppBundle \ Component \ HttpFoundation \ Request的实例,实例   Symfony \ Component \ HttpFoundation \ Request

如何修复测试以确保正确的工作?

1 个答案:

答案 0 :(得分:1)

我的猜测是你必须创建用于测试目的的自定义app_test.php前置控制器:

cp web/app_dev.php web/app_test.php

而不是:

// ...
$request = Request::createFromGlobals();
// ...

指示Symfony使用您的自定义请求:

// ...
$request = \AppBundle\Component\HttpFoundation\Request::createFromGlobals();
// ...

请务必将环境名称从dev更改为test:)