Symfony PHPUnit测试(错误500)

时间:2014-11-17 13:01:23

标签: 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());
   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;
}

它自己正常运行的功能,但是我想检查我的'Content-Type'是否是具有此功能的Json

public function testClients()
{
   $client = static::createClient();

   $client->request('GET', '/clients/list');
   $this->assertTrue(
     $client->getResponse()->headers->contains(
       'Content-Type',
       'application/json'
     )
   );
}

用这个我得到一个FALSE值。 然后我尝试对状态代码进行测试

$this->assertSame(200, $client->getResponse()->getStatusCode()); 

有了这个我得到错误500而不是200 OK 我明白这就是为什么我在'Content-Type'测试中得到一个FALSE值,但我不明白为什么。 我根据Symfony文档做了这一切。 可能是我做错了,还是只是你不能检查'内容类型'?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

JsonResponse确实添加了Content-Type标头(application / json),所以这应该不是问题。

我认为主要问题是您在$行上遗漏了client->request()

编辑:

在宣布您的课程之前,您是否添加了@Route("/clients")

或者,findByUser返回的数据可能不符合您的预期,并且$v的调用失败。