Symfony PHPUnit测试(错误500)

Symfony PHPUnit测试(错误500),php,json,unit-testing,symfony,content-type,Php,Json,Unit Testing,Symfony,Content Type,我正在测试这个功能 /** * @Route("/list", name="_clients") * @Method("GET") */ public function ClientsAction() { $em = $this->getDoctrine()->getManager(); $data = $em->getRepository('InvoiceBundle:Clients')->findByUser($this->user()); i

我正在测试这个功能

/**
* @Route("/list", name="_clients")
* @Method("GET")
*/
public function ClientsAction()
{
   $em = $this->getDoctrine()->getManager();
   $data = $em->getRepository('InvoiceBundle:Clients')->findByUser($this->user());
   if($data){
     $Clients = array();
     foreach($data as $v){
        if($v->getCompanyId() != 0 ) {
           $companyId = $v->getCompanyId();
        } else {
           $companyId = '';
        }

        if ($v->getClient() == 'person'){
           $company = $v->getName().' '.$v->getLname();
        } else {
           $company = $v->getCompany();
        }

        $Clients[] = array(
          'id' => $v->getId(),
          'settings' => $company,
          'companyId' => $companyId,
          'client' => $v->getClient(),
          'mobile' => $v->getMobile(),
          'email' => $v->getEmail(),
          'clientName' => $v->getClientName(),
          'delivery' => $v->getDelivery(),
          'ContactPerson' => $v->getContactPerson()
       );
     }
   } else {
      $Clients = array('data' => 'empty');
   }

   $response = new JsonResponse($Clients);
   return $response;
}
public function testClients()
{
   $client = static::createClient();

   $client->request('GET', '/clients/list');
   $this->assertTrue(
     $client->getResponse()->headers->contains(
       'Content-Type',
       'application/json'
     )
   );
}
它自己运行的函数是正确的,但是我想用这个函数检查我的“内容类型”是否是Json

/**
* @Route("/list", name="_clients")
* @Method("GET")
*/
public function ClientsAction()
{
   $em = $this->getDoctrine()->getManager();
   $data = $em->getRepository('InvoiceBundle:Clients')->findByUser($this->user());
   if($data){
     $Clients = array();
     foreach($data as $v){
        if($v->getCompanyId() != 0 ) {
           $companyId = $v->getCompanyId();
        } else {
           $companyId = '';
        }

        if ($v->getClient() == 'person'){
           $company = $v->getName().' '.$v->getLname();
        } else {
           $company = $v->getCompany();
        }

        $Clients[] = array(
          'id' => $v->getId(),
          'settings' => $company,
          'companyId' => $companyId,
          'client' => $v->getClient(),
          'mobile' => $v->getMobile(),
          'email' => $v->getEmail(),
          'clientName' => $v->getClientName(),
          'delivery' => $v->getDelivery(),
          'ContactPerson' => $v->getContactPerson()
       );
     }
   } else {
      $Clients = array('data' => 'empty');
   }

   $response = new JsonResponse($Clients);
   return $response;
}
public function testClients()
{
   $client = static::createClient();

   $client->request('GET', '/clients/list');
   $this->assertTrue(
     $client->getResponse()->headers->contains(
       'Content-Type',
       'application/json'
     )
   );
}
有了这个,我得到了一个假值。 然后我尝试对状态代码进行测试

$this->assertSame(200, $client->getResponse()->getStatusCode()); 
这样我得到的错误是500而不是200,好吗 我明白这就是为什么我在“内容类型”测试中得到一个错误的值,但我不知道为什么。 我是根据Symfony文档做这些的。 可能是我做错了什么,或者只是你不能检查“内容类型”


任何帮助都将不胜感激

JsonResponse
确实添加了内容类型头(application/json),因此这不应该是一个问题

我认为主要问题是您在
client->request()
行中缺少
$

编辑:

在声明类之前,是否添加了
@Route(“/clients”)


或者,
findByUser
返回的数据可能不是您期望的,调用
$v
失败。

对不起,复制错误了,它有$,但仍然有相同的问题愚蠢的问题:URL正确吗?