我测试这个功能
/**
* @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文档做了这一切。 可能是我做错了,还是只是你不能检查'内容类型'?
任何帮助将不胜感激!
答案 0 :(得分:2)
JsonResponse
确实添加了Content-Type标头(application / json),所以这应该不是问题。
我认为主要问题是您在$
行上遗漏了client->request()
。
编辑:
在宣布您的课程之前,您是否添加了@Route("/clients")
?
或者,findByUser
返回的数据可能不符合您的预期,并且$v
的调用失败。